Three years ago, we were building our very first web-based EPOS system for oipolloi.com, you may even remember this video featuring a much younger me demonstrating a very early proof of concept for the system.
This proof of concept developed into a fully-fledged EPOS system that has been up and running in Oi Polloi's store in Manchester for over two years now. The system works great and provides all of the functionality typical of an offline EPOS system that shop staff are used to. Even better, being web based, we have been able to continuously update and improve the system remotely without having to visit the shop to upgrade the software.
The problem of hardware
Whilst Oi Polloi were happy with their new EPOS system that kept their stock levels and product database up to date in realtime, we still wanted to push our solution further. The problem was an unusual one for us as software developers: the problem was the hardware.
We had to run the system on Windows XP because that was the latest version of Windows that the receipt printer's driver worked on at the time. The most suitable machine we could find that ran Windows XP had a resistive touch screen. You may remember this type of touch screen from ticket or cash machines before the rise of smartphones and their capacitive touch screens: the kind you often have to really bash to get it to recognise your touch, and you certainly can't swipe or pinch.
This posed some interesting design challenges: how should the user control scrolling a list of data? They can't swipe, and the touch accuracy is not terribly accurate so our only option was big up and down buttons. Not ideal.
The problem of portability
One day Jamie came back from the Apple Store having made a purchase and asked me what we would need to do to make our retail experience closer to Apple's. For those who haven't shopped in an Apple store: there are no tills; staff walk around with iPod Touch's in jackets with an integrated barcode scanner and card reader.
I explained that the main limitation at the moment would be the receipt printer (which, in turn, controls the cash drawer). It needs to be connected to the machine where the EPOS system is running in order for us to communicate with it. We could, of course, remove the receipt printer from the equation entirely, but emailed receipts aren't acceptable for all retailers nor customers and the integration for printing to a regular printer is not fast enough for a retail experience.
This got me thinking: is there a way we can provide a wireless and hardware-agnostic solution but keep the existing printing hardware? Could we allow any device with a web browser to use the system and print receipts?
It occurred to me that all we need to drive the receipt printer is a computer, and they can come in some pretty small and discreet packages these days. I started looking at the Raspberry Pi, a tiny computer that can run Unix. Perfect for our needs.
After many months of development, we finished building an app that runs on a configured Raspberry Pi that communicates with connected USB devices and provides a web API into all of the device's functionality within the local network. We decided to call it Waldo as we stumbled across the definition for the word:
a remote-controlled device for handling or manipulating objects.
We can now run our newly rebuilt EPOS system on any device (we normally chose an iPad). Receipts are printed and the cash drawer is opened over the local network via a Waldo device. Once we've built a responsive interface for devices such as an iPhone with a smaller screen, we're pretty much at the Apple Store experience.
In the next post, I'll go into more detail about how Waldo works, what technologies power it and explain our future plans for the device.