It’s possible that this is a retelling of a post I’ve already written.
In the spirit of the Food Network’s “the best meal I ever ate” show; this post describes the best project I ever implemented.
In the late 1980’s early 90’s I worked as a contract programmer assigned to work for IBM’s Manufacturing Systems Division in Boca Raton Florida. I had considerable CUA (common user access) experience and I was supposed to validate a 3rd party’s compliance before IBM released the project. The problem was, however, (a) the application was not compliant, (b) it was extremely buggy and in the first week I wrote 1500 PSR’s or bug reports, © and the vendor overstated it’s scalability.
The first “best project” was a terminal simulator. Per © the vendor stated that their control program could download the application and RTOS to 4096 devices in some ridiculously short period of time. It was essentially the theoretical maximum capacity of the RS-422. Since I was skeptical I designed and implemented a terminal simulator which was capable of simulating all 4096 terminals. Testing proved that the vendor could not achieve more than 25% of their promised capacity. In the end IBM elected to allow them to use the application in development.
The second “best project” was a barcode reader simulator. IBM had an important client that was having problems with their barcode reader on one of IBMs MSD computers. From time to time the computer would misread the barcode by inverting the first two characters. This was not a serious problem but trouble for management nonetheless. Back in those days we had a parallel printer port that we used to connect our printers. The parallel port was not much more than a DIDO (digital I/O device) with individually addressable pins at the device chip level. So I connected my parallel port to an oscilloscope and then to one of the MUTs (machine under test)… and proceeded to write a simulator that could simulate the barcode device, the human and electrical characteristics, including first bar blooming. After testing for a few days I managed to reproduce the problem. Between first bar blooming, a stuck interrupt in the terminal application and a weakness in the I-2of5 barcode there was a character inversion.
The third “best project” was a regression test tool. By this time IBM had decided to build a new device. This new device was going to be implemented from the ground up and I was going to be working on the regression tests. At the time testing was primitive and manually intensive; so I built some automation tools. I designed a DSL that I could use to implement the tests. And a GUI+runner that could be used to run the tests and report the results. This saved me a lot of time so that now I could write more tests and test more releases.
The third project was a little less satisfying but it allowed me to continue my contract… and it was the tipping point for the forth and final project. I expanded on the 2nd project so that I was able to simulate, visible light barcode, infrared barcode, laser scanner, magstripe, printers, and a keyboard. I added software downloads, automation, and more human factors. Now when the development team handed me a new release I could perform a complete regression in a fraction of the time.
In order to turn this into an internal product; I worked with the engineering team to bundle and replicate the test harness so that I could test 4 computers per test machine; and we assembled 4 such devices. Later the devices were shipped to the manufacturing facility so that it could be used in the FVT (functional verification testing) stage of the manufacturing process so that boards could be tested after they came off the manufacturing line.
That was the best project I every worked on.