Dr. Dobb's Journal August 2002
Each year in August, on my anniversary with Dr. Dobb's Journal, I reflect on my past. Since I write about programming, I think not only about how I've written about programming but how and what I programmed, too, in the many years since I started doing it. I've worked on some really cool projects. Or have I?
There's a saying among programmers that goes something like this: Everything that's cool happened or is happening somewhere else. Some of that is true, but often, most often, it only seems that way. Some projects are indeed cool, and it does seem that they are always going on somewhere else. But there's no way to know for sure; I can write about any software project and make it sound cool. You would be impressed. You would read about it and wish you were in on that cool project instead of doing the uncool thing that occupies your particular daily grind. If you doubt this, read any well-prepared résumé. Read your own. The coolness is in the telling. According to our résumés, everything you and I ever did was cool. Our projects are creatively cool.
To reflect honestly, though, you have to regard those bygone projects objectively. As I read my old résumé, I think about all the assignments that read like they were cool but that resulted in little or no useful software, certainly nothing cool, and I regret the time wasted and opportunities lost. Usually, the government was in there somewhere.
There was the operating system we wrote to run on computers permanently installed on aircraft carriers. Welded to the bulkheads. Really permanent. Writing operating systems for aircraft carrier applications is cool, right? Zoom, zoom. Top gun. Hot stuff. Right? Wrong. The hardware we used would have been obsolete on the Merrimack much less a modern carrier. The refresh memory for the video terminal was a huge, slow, fixed disk drive. Huge in physical dimension, not capacity. To display characters on the display, you had to write bit patterns to the disk. That was my assignment. I wrote the display driver for the slowest video terminal in the world. A mediocre typist could get ahead of it by about twenty words. And they were using it to analyze intelligence data. No upgrades allowed because the hardware was welded on and bolted down.
While we were doing that uncool project, we read in the technical journals about a couple of guys at AT&T who were building their own cool operating system named UNIX with their own cool language named C. They did it somewhere else.
I recall the military project with van-mounted computers for battlefield processing. Sounds cool, doesn't it? The console was a typewriter device. We wrote in the user's guide that the console supported something like 51 characters on a line. But the device manual from the manufacturer said you could type 64 characters on a line. So why did we restrict our operators to 51? When they jammed all that bulky mainframe hardware into a moving van, there wasn't much room for a workstation. Consequently, when you typed the 52nd character, the console's moving carriage hit the wall of the van.
Elsewhere, a small company named Intel was putting out a new 8-bit microprocessor-based system called MDS-80 for developing what was to be called "embedded applications." Its operating system was called "CP/M." It was cool and you could fit it in a small workspace. They did it somewhere else.
You can read in my résumé about the cool project that supported local governments in the administration of the then new federal food stamp program. It was really cool using computers in an altruistic application to help the needy put food on their tables. Yeah right. The first thing we ran into was the frustration a typical social services organization endures when they try to qualify applicants. They want to ensure that benefits go only to truly deserving citizens. I got my first exposure to widespread welfare fraud during that cool project. The cold (as opposed to cool) reality is that if you spend enough of the welfare budget to accurately confirm the applicants' claims, no money remains to feed anyone. Ask and ye shall receive whether ye deserve it or not.
In other locations far away, programmers were building software for inner city classrooms. Now that's cool. They did it somewhere else.
Then there were the projects that could have and should have been cool. We designed a system to build and use a graphical computer model of the Space Shuttle's cargo bay to simulate cargo in- stallation. Prelaunch cargo processing is a big problem because every launch is unique. They wanted to support two launches a month and the manual configuration processing procedures wouldn't support that kind of schedule. They wouldn't let us on board to make measurements, so we had to devise a remote 3D digitizing technique. We set up two laser transits on the vertical processing unit floor when the cargo bay was installed for cargo installation. We aimed the two transits until their points converged on the surface of the cargo bay. We wrote down the aiming coordinates for each transit. From those numbers, we could compute the coordinates of the point in 3D space. Then we aimed at the next point on the cargo bay. From the points we collected, we built a wire frame model of the cargo bay. Now we could build a simulation model of each cargo configuration and plan payload installations automatically. Now that's cool. Or should have been. We had the project well specified and almost approved for development when the Challenger accident put the brakes on all new Space Shuttle projects.
Elsewhere, programmers were building firmware to drive the Hubble telescope and give us pictures of the universe never before seen. They did it somewhere else.
Some really cool projects lose their chill when their technology is overtaken by time and when they've outlived their need. I wrote the software for the Univac 1652, an early dual-screen terminal. Dual was cool. It had specialty backlit function keys and a real cool pointing device long before anyone heard of the mouse. The terminal became technically obsolete when microprocessors got faster. But the project survived longer than it should have because it was housed in a Tempest-qualified box, which certifies a device to suppress RF emanations that spies could intercept and read. The Tempest label anoints a device as usable by intelligence analysts to process sensitive stuff. It costs a lot of money to get Tempest certification. That was a really cool project, but it's kind of warm these days. I wonder if they still use the old 1652.
When I look over the old projects I did for this column in the past 14 years, I see a lot of cool stuff that no one wants or needs anymore. Remember terminate-and-stay resident (TSR) programs? The wedge you had to drive into MS-DOS to make them work was really cool. All those text-mode windowing frameworks were cool, too. D-Flat and its derivatives involved a lot of work and provided a full application framework for MS-DOS programmers. I doubt that anyone would want to use that cool project now.
The Quincy C interpreter was cool. I derived Quincy from a C interpreter written by Bob Brodt who derived it from the Tiny C interpreter. A major embedded system developer used Quincy's interpreter to implement its testing script language. It was cool then, but C isn't cool these days. Too bad, because the hardware has finally caught up with Quincy. It was a really slow interpreter in its day. Now, it runs like lightning on 1.5 GHz computers. Fast is cool.
So, have I ever done anything that was really cool and stayed cool? Yes, I think so. But I can't tell you about many of those projects. National security and all that. I could tell you, but then I'd have to...
So, don't tell me how cool your work is. But let me tell you about my latest cool project. Well, cold, actually.
There's a lesson to be learned in the next few paragraphs. Pay close attention. Don't let false economy and procrastination do to you what they did to me.
Several years ago, I launched in this column a music application named MidiFitz. The application watches the notes you play on a MIDI keyboard and generates MIDI drums and bass accompaniment in real time to match the style and chords you play. The program worked so well that I built a commercial version with lots of features and sold it on the Internet. I registered the domain name, midifitz.com, and built a web site. Midifitz is indeed one of the coolest programs I ever wrote. It sold a few hundred copies to some satisfied customers, but the project didn't turn Midifitz into a multimedia superstar product because I never marketed it aggressively. Eventually, I allowed the product to fade into commercial obscurity.
Since I owned the domain name and had a hosted web site, I built my other web pages related to other business and personal activities as extensions of midifitz.com. If you wanted my personal web site, it was midifitz.com/alstevens. If you wanted to download one of the many programming projects I published, you'd go to midifitz.com/alstevens/quincy2000, for example. I published these URLs in programming books and in this column.
I tried to register alstevens.com back when I first got into this Internet thing, but a California roofer named Al Stevens already owned the domain name and had a nice web site. (That's what can happen when you don't have a peculiar, oddball name like "J.D. Hildebrand.") After a while, the roofer's alstevens.com site was taken offline, but the domain name remained registered. Every now and then, I'd check to see if it was available. Eventually, the roofer let the name expire, I grabbed it, and http://www.alstevens.com/ was and is mine. I moved all my pages to that site. In the meantime, the midifitz domain name was about to expire. I got several $70 invoices from the registering authority to renew it for another two years. My ISP, who hosts my sites, advised me to ignore those invoices; he would transfer the domain to a less expensive registering organization. I could save twenty bucks. It turned out to be a bad decision. When the time came to do the transfer, the original outfit wouldn't permit it, saying we had waited too long. If we wanted midifitz.com, we had to pay them their pound of flesh. My ISP and I agreed that we should simply let the domain name expire; we would reregister it as a new name with the less expensive approach. Little did we know...
I wanted to keep midifitz.com because some books still in print give it as the path to download software related to the books and an old e-mail address, alstevens@midifitz.com, might still be in the address books of people I'd like to hear from. There'd be no problem getting it reregistered once it had expired. Surely nobody else would want a stupid name like midifitz. We did not expect what followed.
Eventually, midifitz.com expired, but I was busy with more important things, other cool projects and the like, and I procrastinated. I don't know how long it took, but someone else grabbed the midifitz domain name just as I had grabbed alstevens.com. I found out about it when I got the first of many outraged e-mails from readers who could not find their upgrades at the location advertised in my books. Wondering why they were mad at me, I surfed to midifitz.com and found a site that markets toner cartridges. Later outraged e-mails hinted at more offensive content and I learned that the midifitz.com content changes frequently.
Readers blamed me for the offensive intrusions. A few were nice about it, wondering only what happened to the original site, but most have been downright furious at being lured to an obnoxious commercial site by someone they thought they could trust. I can't blame them.
With the precious wisdom of 20/20 hindsight, the obvious occurred to me. Somewhere out there, something cold (as opposed to cool) is happening. Someone is watching for expiring domain names that once enjoyed substantial legitimate traffic. When such a domain name expires, the predator grabs it and exploits it for commercial purposes. They are hoping, I suppose, to get residual traffic from what would otherwise be broken links to the domain. They are hoping also, I surmise, that the original owner wants to stop the scurrilous use of a previously respectable domain associated with that owner and will pay money to get the domain name back, redeem its reputation, and stop the hate mail. Dream on, interloper. You ain't getting any money from me. I am tempted instead to automatically forward all the spam I get to webmaster@midifitz.com. You can read all the junk mail sent to me about how to lower my mortgage rate and increase the size of my...er, never mind.
What they did isn't nice and isn't right. But it's legal, and I am once again reminded that our species includes certain mutant creatures who are unconcerned about what's nice and what's right when their personal gain is involved. The Internet has provided them a vehicle from which to exercise yet a new kind of confidence game. As opposed as I am to excessive government regulation, particularly of such a beautiful anarchy as the Internet, I am beginning to see a need for something that forces sleazy unethical people to behave themselves. I'd even work on a cool project to develop some cool enforcement software. It would go at the top of my résumé of cool things I have done. You would be impressed. It would be cool and it would happen here.
DDJ