Excellent Software Experience

I recently upgrade my mom’s store to use The Uniform Solution – it’s a point-of-sale + inventory + EDI ordering software designed specifically for stores that deal with uniforms and scrubs and stuff like that.   And speaking as a software developer, the experience was awesome

I want to call them out on some of the stuff they did well:

Appropriate System Design

They don’t do anything overly fancy.   They have a SQL Express database; they have a client that interfaces to the database.  The “main computer” has a share, other clients map to the share and run the same executable.     It’s a little unnerving – the share is wide open – however, if you’re enabling WIFI at your store direct to your internal network, you’ve got other problems going on.   And, I’m sure it could be locked down; their target audience usually doesn’t have an IT department, so they did the right thing for their market.

For a web server, we’re not using it (yet), but it looks like a stand-alone executable that hosts the website.    Well done.

Excellent Installation

Server install – Single executable – run – it detects if its upgrading or installing.  It downloads SQLExpress 2012 and totally auto-scripts the install of it (much to my chagrin, I could not easily hack into their database and look at tables directly.. I wanted to see what their schema looked like).   

They stick everything in C:\USW. 

Client install – Map a network drive to the server share; run an executable – it makes sure that firewall settings are set up correctly, sets up an icon, done.

Once their software comes up, it has a failsafe option – if it can’t connect, you can configure it to help it find its SQL Server.    Well done!  as in, they didn’t assume that that part will work all the time.

The running software automatically keeps track of who is logged in concurrently.  I suspect they use some network broadcast type stuff.   I’m reminded of the 1990’s “net send” command, for some reason.

Backup and Restore

They provide their own backup and restore functionality – Everything gets dumped into a single file (extension .bsql – I think it’s a zip of schema + data).   They automatically take a backup first thing in the morning (first time a person logs in to the system in a day).  I found their auto-backup directory, and I added a script to it to sync the latest N files to dropbox as an off-site solution (different blog post).   I did do one restore; I need to do another with the offsite stuff. 

Side note: I tried to use an azure VM to do the DRP restore session, but their software had a hard time installing SQLEXPRESS on Windows Server 2012 and then finding it later.   Will do the restore on my surface at some point just to make sure its possible.   Which is actually perfect – my surface was used as a client for a while – we hooked a usb barcode scanner to it and mom walked through her shop importing inventory with it (we were waiting for the bluetooth wireless scanner to arrive.  Prime is only so fast.)   Ie, just like in the real world, if the server dies, we’ll probably promote client #1 to be the server – so test restoring on that laptop would be the ideal DRP test.

Excellent Technical Customer Service

I had to call them a few times.  Freaking awesome – they people I talked to, not just some help desk lackey.  These were highly competent technical people (I can tell the difference).  At the first sign of miscommunication, they immediately went into “let me remote in and look at your screen” mode and took it from there.    

I could also tell that these people are a team.  They trust each other.   They like what they do.   They don’t want to grow big and take over the world, they want to be excellent and do excellent and completely solve the one corner of the universe that they have adopted.

Well-Iterated UX

After using the software for a bit – especially on their point of sale screen – I came to appreciate the love and care they have put into their product.  Little things, like “type in stuff in the text box – if its decimal and less than 1, it’s a %off; if its integer between 1 and 99, it’s a quantity” etc – made the system very efficient to use.    I came home and used the same idea on our fridge-inventory-scanner app at work.  (different blog post)

Some of the Finer Points of their System Design

  • “Catalogs” = people out there in the world that they maintain catalogs for.  If they maintain a catalog for it, it means they know all the bar codes for everything in that catalog.
  • “Inventory” = things that you might or might not have in your store.   Breaks down to Vendor, Product, Size, Color.    
    • You can add your own Vendor, Product, Size, Color, etc to inventory – you just don’t get the pre-loaded data from the catalog. 
    • Mom does carry other stuff in her store that they don’t have in their catalog – notably, SAS shoes.
    • Everything that gets added to inventory gets its own unique custom bar code number as well.     Think “SKU” from BestBuy.
    • You get to set the prices for inventory (there are standard formulas for per-vendor markups that you can tweak)
    • USW (that’s what they call it) can and will print out a shop-specific bar code + price to stick on the item.
  • Hardware wise, the app knows how to talk with:
    • Barcode scanners (basically, they work as USB keyboard-entry-devices; when you scan something, it types the stuff in and presses enter)
    • Pole Displays (we didn’t get one)
    • Receipt Printers (just another printer, but with a possibility of controlling a cash drawer)
    • Cash Drawers (it tells the receipt printer “open the drawer now”, and there’s a cable between the cash drawer and the printer which sends that signal across)
    • Zebra Thermal Label printers (for printing out cute little labels OMG so cute)
  • At the checkout, you can scan:
    • the original bar code that came with the item (if its something in a known catalog)
    • OR the shop-specific price tag + bar-code
    • OR search inventory to find the thing
    • OR just type in “*9.95” and get a miscellaneous item for $9.95. 
      • But then inventory doesn’t get tracked correctly if the item was actually in inventory.
  • You can set up customer tracking
    • Special customers, for example, don’t get charged sales tax (governmental things)
    • Or, maybe you just want a list of customers to keep track of what they ordered.
    • typing in 3 letters of customer’s name triggers a customer search in the sales entry screen.  (nice touch)
  • There are special modes for dealing with “sucking inventory in the first time”
  • There are special modes for placing orders, and then printing tags specific to the order that was placed.
  • There are user permission levels (initially turned off) to allow for managers vs clerks, etc.
  • There’s a built-in time-card check in/out thing.
  • There’s cash drawer check in / out things.
  • There’s end of day reconciliation reports and all kinds of other reporting.
    • With a Print Preview for seeing it on screen
    • and everything has a Print to PDF option
    • and some of the reports are aware of if you are printing to a receipt printer vs a regular page; and self-format accordingly.
  • They chose to integrate with X-Charge as a credit card processing system – it was a little bit involved, but in the end, how it works:
    • The XCharge guys installed the xcharge server + client on the machine(s).  It can run as a service, but in our case it sits in the system tray.  It deals with talking over the internet, running cards, that kind of thing.
    • USW just knows a username/password to log into the local xcharge thing and posts things that way.
    • USW doesn’t hang on to any credit card information.  That’s all XCharge’s thing.
  • Their pricing model is simple:   Monthly, $250/month, +$25/mo for each additional concurrent user.   Simple, straight forward, and definitely worth the less-than-$10-per-day that its costing my mom.   (Well, one-time cost on the computer hardware)
  • They provide 250 minutes per month of technical support as part of this. And looking at the emails I get, the service they provide is impeccable:
    • The person you talk to very quickly drops down to “here let me show you how this works” mode and remotes in to look at your screen.
    • After the support session, everybody gets an email saying “here’s what I helped you with”
    • And they clearly mark how many minutes of support were used, and how many are left, for the month.
  • Did I mention Video Training on topics of all sorts?   (It needs a little update, but overall, pretty good).

All in all, a big huge THUMBS UP for these dudes.    If I ever get into providing a specific solution to a specific market, I’m totally going to try to live up to these folk’s standards.

The only thing that I would suggest to them – because they have such a wide-ranging system – is perhaps a “day in the life of” video series for prospective customers.  Ie, show a real life scenario of “here’s how a clerk uses the system” vs “here’s how an owner users the system”, etc.    Especially if its people who like using the system, who can show off their favorite shortcuts, etc.    

Tagged with:
Posted in Code

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories
Tags
.net 3d 3d-printing 4k abc15 algorithms ames android anonymous types asp.net audio editing aws backup basecamp beatunes biorhythm bitcoin bittorrent blender blog boston marathon bpm c# caffeine campfire candycrush car carmax charity chiropractor cities-skylines clog clone codelouisville codepalousa coding coffee collaboration color run ComputerElbow ComputerVision configuration consulting cooking crash course crashplan crestwood cycling dabda dan dapper DataSet ddl diabetes dictation dotnetcore dotnetmud downtown e-cycling elite excel exercise expiration facebook feature-branching firefall flipflops Flow FL Studio focus food forecastle fortresscraft franklinplanner gadgets game-design games git github google docs google maps gopro gps grandpa greenshot hack half marathon headless health heart rate hiren ignew integration testing interop inventory ios ipad itunes javascript jobs karma kdf keyboards keys kittens lamont laptop lavalamp lego life lifehack linq linqtotwitter linux los angeles louisville mandelbulber massage therapy mastery-teaching maths merge metformin Minecraft miniature modeling monitor mud muhammad ali institute music mvc mycartracks netfabb nexus10 node nostalgia nutrition nwipe oldham county grand slam opal openjscad openscad owin pacedj paper mockup pepakura performance photoscan politics pomodoro postgresql powershell premiere prius process product-management project-management qa ReFS resharper review rmi roman road 5k RSI rubiks running samsung 700t sandals schedule scooter scribblelive selenium service shapeways sleep slic3r sneakersync snot software software-engineering solidoodle soylent spacegame speaking sql sqlite SSDT SSIS standing state-machine stayfocusd stonehearth sunset tablet teaching team teamcity teamtreehouse terraform tesla testing tfs time timelapse torque touch tracks trs80 Tuple tutor twitter ubuntu unit testing utilities video video editing visual studio vscode vsvim warp stabilizer windows 8 windows home server wordpress wpf xml
Archives
%d bloggers like this: