Skip to main content

The best project I ever implemented

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, (c) and the vendor overstated it's scalability.

The first "best project" was a terminal simulator.  Per (c) 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.


Popular posts from this blog

Entry level cost for CoreOS+Tectonic

CoreOS and Tectonic start their pricing at 10 servers. Managed CoreOS starts at $1000 per month for those first 10 servers and Tectonic is $5000 for the same 10 servers. Annualized that is $85K or at least one employee depending on your market. As a single employee company I'd rather hire the employee. Specially since I only have 3 servers.

The pricing is biased toward the largest servers with the largest capacities; my dual core 32GB i5 IntelNuc can never be mistaken for a 96-CPU dual or quad core DELL

If CoreOS does not figure out a different barrier of entry they are going to follow the Borland path to obscurity.

UPDATE 2017-10-30: With gratitude the CoreOS team has provided updated information on their pricing, however, I stand by my conclusion that the effective cost is lower when you deploy monster machines. The cost per node of my 1 CPU Intel NUC is the same as a 96 CPU server when you get beyond 10 nodes. I'll also reiterate that while my pricing notes are not currently…

eGalax touch on default Ubuntu 14.04.2 LTS

I have not had success with the touch drivers as yet.  The touch works and evtest also seems to report events, however, I have noticed that the button click is not working and no matter what I do xinput refuses to configure the buttons correctly.  When I downgraded to ubuntu 10.04 LTS everything sort of worked... there must have been something in the kermel as 10.04 was in the 2.6 kernel and 4.04 is in the 3.x branch.

One thing ... all of the documentation pointed to the wrong website or one in Taiwanese. I was finally able to locate the drivers again: (it would have been nice if they provided the install instructions in text rather than PDF)
Please open the document "EETI_eGTouch_Programming_Guide" under the Guide directory, and follow the Guidline to install driver.
download the appropriate versionunzip the fileread the programming manual And from that I'm distilling to the following: execute the answer all of the questio…

Prometheus vs Bosun

In conclusion... while Bosun(B) is still not the ideal monitoring system neither is Prometheus(P).


I am running Bosun in a Docker container hosted on CoreOS. Fleet service/unit files keep it running. However in once case I have experienced at least one severe crash as a result of a disk full condition. That it is implemented as part golang, java and python is an annoyance. The MIT license is about the only good thing.

I am trying to integrate Prometheus into my pipeline but losing steam fast. The Prometheus design seems to desire that you integrate your own cache inside your application and then allow the server to scrape the data, however, if the interval between scrapes is shorter than the longest transient session of your application then you need a gateway. A place to shuttle your data that will be a little more persistent.

(1) storing the data in my application might get me started more quickly
(2) getting the server to pull the data might be more secure
(3) using a push g…