My oldest code still running

Sunday 23 November 2008This is 16 years old. Be careful.

One of the odd things about working at Hewlett-Packard is that part of it is what’s left of Digital Equipment, where I worked for seven years, from 1986 to 1993. Every once in a while, I’ll stumble on some new artifact of that history. Lying next to a printer, I found this, a VMS banner page:

A VMS PostScript banner page

It took me back, because back in the late eighties, I worked on this software, meaning not just the printer software in VMS, but the PostScript code that drew this page.

This is probably the oldest software of mine still running. Funny to think that while I went off to pursue hundreds of other projects, this PostScript code was obediently drawing this simple page over and over for 20 years.

Back when we were first developing that banner page, it was being used on an LN03R, an 8 page-per-minute laser printer. People complained that the banner page was taking too long to print. I was given the job of toning down the PostScript complexity so that it would print more quickly. People felt like all those scalable fonts must be a bottleneck.

After doing a number of controlled experiments, and whittling down on the pages, it became clear that nothing was making it go faster. Finally I reduced the code to:

% Just print a blank page
showpage

and the blank page took just as long to come out of the printer as the “fancy” banner page with all the different font sizes on it.

What I learned was:

  • Just because a technology is new doesn’t mean it’s the culprit.
  • When waiting for your print job, any pages you don’t want will seem too slow.

Comments

[gravatar]
I worked at DEC in the "Hardcopy I/O" group in Maynard back in the early 80's. My first big project there was on one of DEC's first laser printers - a 40 PPM beast. I think the printer mechanism came from Ricoh. The engine was based on a custom bit-slice processor (in vogue at the time) and I worked on the graphics firmware. I remember implementing arithmetic routines and Bresenham's algorithm in assembly for it.

I hand coded a file of drawing instructions that printed out a demo page with a bar graph and text and other simple graphics which got used far and wide to show the printer's potential.

Eventually we decided that DEC's graphics language wasn't the future for the printer world. We flew out to Palo Alto to meet with Adobe and talked with Chuck Gesche - one of Adobe's founders. DEC and Adobe struck a deal. It turned out all we had to do for graphics engine was implement a simple primitive "draw trapezoid" and the PS interpreter took care of the rest - so there's wasn't much to do anymore in terms of graphics firmware and I moved on. Thanks for the Nostalgia trip!
[gravatar]
Even back when I was a budding young VMS system administrator still naive enough to compare it to Linux, this banner page impressed me :)
[gravatar]
Cool stuff. I thought you guys had all moved on. ;)
[gravatar]
I remember a few years ago being at the exact point when everything I'd ever written professionally had been scrapped. EVERY LAST LINE. At that point I remember thinking that I really should have chosen a different career.
[gravatar]
I'm quite familiar with that odd nostalgic feeling. You see, there's this very thoughtfully written Python oriented blog that I enjoy reading. Every once in a while, though, it'll do something like show me a banner page that I haven't seen in 30 years.

There's a reasonably decent chance that I submitted the QAR about that banner page being too slow on the LNO3R. Hopefully I didn't jump to the conclusion about the fonts but I easily could have. My (very vague) recollection is that the core issue was that the "time to first page" was really long on the LN03R.

I sometimes hope that there's an LPS40 (the 40ppm PostScript printer alluded to in an earlier comment) somewhere faithfully churning out medical reports at some hospital somewhere. Plausible, but not likely, I suppose.
[gravatar]
The oldest continuously running process I had lived about 5 years. Back in my CDNow days I wrote a redirect daemon that mapped MusicBlvd.com URLs to CDNow URLS (the latter bought the former). It lived even after Barnes & Noble bought CDNow. At about the three year point I got an email from an admin asking me if I remembered the root password because the /var/ partition was full (I did not).

The best long running app I wrote was a cron job for the same company. It was named mail_credit_card_info and emailed me every night with the message "Yup, still running." It had Easter Eggs that it would show depending on who ran it. It was a stripped binary with encrypted strings so running /bin/strings on it only displayed "Running strings on this will buy you nothing." After two years one of the sysadmins found it and its source and dropped me an email.

Unfortunately I told that story too many times so the only Easter Eggs I've left since have been more innocuous. At my last company login passwords are not just hashed with a random seed but also with my favorite passage from The Iliad.
[gravatar]
Thats a great story. I always love when entire groups of people are convinced something is happening without any reason or evidence. I wonder how many coders would have went straight to optimizing their code as opposed to printing the blank page.

As a 22 year old, my oldest code that is still running is only about a year old, hopefully this looking at it will be more interesting as I age.

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.