Linux as POS in Pizza Bars
I am fortunate in that I started my career in the mid-80s as a UNIX applications programmer. Computers were fun then: Ataris and Amigas were breaking new ground each month, UNIX minis were fighting hard against the tide of IBM system 36s and 38s, and innovation ruled the day. Toward the end of the 80s, a new system, MS Windows, began gaining a tiny toehold in corporate computing. This new system offered three main advantages over minis :
Lower entry cost
Easy access to technical information
Ability to include exciting graphical interfaces
By 1994, I was a true believer. I lived and breathed MFC, VC++, OLE, VXD's and DLL's. Yet somewhere in the back of my mind lurked a deep yearning for the power of a UNIX command line. One day, when I got the money together, I would buy a Sun workstation and get a real computer for the home office. At that same time, one of my co-workers started telling me about Linux. I dismissed it at first—I simply assumed that a “free UNIX clone” would be some toy system that ran slowly, crashed often and lacked fundamental commands such as grep and find. To me, Windows was the key to the future, because in any objective comparison, the cost plus power of Windows would prove to be a better buy. I remember saying to him at the time: “The day that Linux is running the local pizza bar, I will start to change my mind.”
As 1995 came around, I was annoyed at having to upgrade all of my tools (again) in order to keep on the leading edge. Windows 95 was due out soon and the Win32 API was the thing to be using. I was faced with the prospect of possibly having to rewrite all of my core libraries (again) due to a company on the other side of the world which decided to change its APIs (again). I began to feel somewhat trapped.
The day Win95 was released to the public, I walked down to the software shop at lunchtime, slipped past the queues of people holding Win95 boxes, and (purely out of curiosity) purchased a copy of Getting Started With Linux. For $35, this was half the cost of a book covering some of the new Win32 APIs. I was amazed to discover the book also included a CD for that price.
I installed Linux within a few hours and was literally stunned at what I found. I really did not expect to get a real system with X, compilers, source, etc. The whole experience changed the way I looked at a lot of things.
In the intervening period, I have used Linux at each place of work as a development platform for all manner of applications, web servers, database servers and more.
In October 1997, a chance meeting with an old friend led me to a potential client who was looking to computerize a pizza bar/restaurant in Adelaide. While I normally work on large contract projects on enterprise level systems, I felt compelled for a number of reasons to take this job. While the irony of fulfilling my own comment from two years ago was indeed a factor, I also saw this as a good opportunity to prove that Linux can compete on traditional PC home ground.
A number of existing systems were available at the time for the restaurant owner to choose from; two other systems running under DOS, and one under Windows. All of the other systems were proven in existing restaurants and available at a low price. The decision on which system to purchase would come down to a number of factors:
Ease of use/training
Reliability and support
Future expansion to handle multiple stores
Was it possible to produce something from scratch, in a limited time frame, and still beat the competition in all four categories? I assembled a team of three programmers, and we took the risk.
Figure 2. Shows the main order entry screen. The fields on the left scroll up and down to allow unlimited items to be added to an order, and the graphic panels on the right display a quick view of all of the various codes.
Linux helped us in the following ways:
Price: For a start, we had no operating system cost overhead. While this saved only about $100 initially, it would be a bigger factor when considering additional machines. Also, the wealth of freely available development tools gave us a big edge over the other systems. Finally, we could go with a more modest hardware configuration compared to the Windows solution, while still achieving the same level of performance.
Ease of use: Using Java, we produced nice GUIs that were as easy to use as any Delphi or VB application. For training, the X Window System allowed us to dial into the customer machine using PPP and redirect our screens onto the customer's monitor to discuss new features, while talking to them on the phone.
Reliability: These days it is easy to point to the proven track record of Linux as far as reliability goes. Selected articles from magazines such as Linux Journal continuously demonstrate this point.
Support: Linux allows us to take full control of the customer's machine from a remote location. This is especially important when a pizza bar, located 30 miles from your home, has problems at 3 o'clock in the morning.
Future Expansion: Linux's excellent ability to handle a distributed system comes from a long and proven track record of success as an Internet server. When you start talking about distributed databases linked via low cost dial-up lines, the opposition starts to look very shaky indeed. Most things in UNIX-based systems are a bit ugly to do, but a simple and elegant solution is always close at hand, no matter how complex the problem. The other systems, by comparison, tend to offer very friendly point-and-click solutions to simple problems, but also tend to get exponentially more difficult as the problem becomes more complex.
- Tips for Optimizing Linux Memory Usage
- Picking Out the Nouns
- "No Reboot" Kernel Patching - And Why You Should Care
- DevOps: Better Than the Sum of Its Parts
- Return of the Mac
- Android Candy: Intercoms
- Drupageddon: SQL Injection, Database Abstraction and Hundreds of Thousands of Web Sites
- Non-Linux FOSS: .NET?
- diff -u: What's New in Kernel Development