Sunday 23 November 2008 — This is nearly 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:
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
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!
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.
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.
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: