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.