Case Study: CyberPenguin

In late 2007, I ran across a guy who was preparing to open a Linux-based internet cafe named “CyberPenguin” in the Philippines. After discussing his needs, he asked me to write a custom billing and workstation management system for the cafe’s use. In 2008, he came to me again to request some additional features, which I was quite happy to help him with. With that expansion complete, he has prepared a case study on the project, which is now available in both online (HTML) and printable (PDF) versions.

Looking back over it, I have to say that I really enjoyed this project. Not only was CyberPenguin’s owner great to work with and provided some of the best specs I’ve seen from any of my clients, but he was also always willing to discuss their content and to consider any suggestions I had for improving on his design.

Features

The case study itself provides fairly complete lists of the original functionality and what was added in the expansion project. The only thing that stands out as missing was the one part that I was least sure of being able to work in smoothly: Promotions.

The original spec called for an extremely flexible promotions structure, allowing operators to define various combinations of times of day, days of the week/month, minimum purchase amounts, etc. under which a user receives either a flat bonus amount or a percentage bonus to purchases of credit on his account.

Previous experience with calendars and scheduling software gave me a pretty good idea of how to handle the infrastructure behind the promotions functionality, and even to make it more flexible, allowing the criteria for promotion eligibility to be mixed and matched in any way desired rather than only the specified combinations. But I expected designing an interface to control this flexibility without overwhelming the user to be a somewhat more daunting task.

In the end, I was able to come up with a clear, simple way for users to specify a promotion to be, say, “Top up account by P10.00 and get 15% extra from midnight until 6:00 every 4th Monday, Wednesday, Friday.” And, yes, the interface is also able to describe the promotion details in English - that sentence was copied and pasted directly from it.

Technology

CyberPenguin runs on Ubuntu, which is derived from Debian GNU/Linux - my preferred operating system - so I was already very familiar with the server environment that I’d be working with. The workstations also run Ubuntu, under the control of DRBL (”Diskless Remote Boot in Linux”), which was new to me, but I was already familiar with other Linux-based thin client and diskless workstation setups, so it didn’t present any issues.

In addition to the Linux operating system, the rest of the application was built on Apache 2, MySQL 5, and Perl 5.8, making up a standard LAMP (Linux/Apache/MySQL/Perl) environment. In addition to LAMP for the web interface, the application makes use of Perl programs run as scheduled tasks (by cron) each minute and each day to handle the billing and accounting details.

[Post to Twitter]   [Post to Plurk]   [Post to Digg]   [Post to ping.fm]