During the first part of my University career I lived in an Engineering Frat house off campus. In the basement
we had an old pop machine (the kind with the slim door that opened so you could pull out a bottle) that had been
lying around for years. An electrical engineer at school had designed a rather archaic (but very cool) unit with a keypad and 4
digit LED display that managed pre-paid accounts for this machine--just type in your code and your account would be
decremented by one, and it would 'pay' for your beverage.
One day this device broke down, and it wound up taking over a year to get it fixed. In the meantime, I decided
that it couldn't be that hard to reinvent the machine, but with standard PC hardware so that if anything ever broke,
it wouldn't take nearly the same level of expertise to repair it.
I got another electrical engineer to design a device that would use a parallel port to swich a 120VAC current,
using an opto-isolator and a large 400V/25A Triac transistor. Using Turbo Pascal 4.0 (one of my first programming
languages) I wrote 85k of code that used low-level hardware access and interrupt hooks on DOS 3.x to manage a
propietary user account database and user interface (this was 1994). It wound up being quite modular, allowing a large amount of
user modification and user functionality.
Some typical screenshots are shown below; these were taken recently and
thus have the window frame on them, but the original ran on DOS 3 fullscreen.
A typical user menu after logging in
The super-user menu, allowing account editing, etc.
The Setup program, showing a typical interface (hardware/software delay specification)
This project taught me the level of complexity involving proprietary hardware/software solutions, especially with a
commercial project where security was a huge issue--in a house full of engineers, this system basically became the
hacker's challenge from a security standpoint. This software had to go through a large number of revisions to fix
security leaks, but each taught me something more about how secure a piece of software like this needs to be.