Loathing The Printer

12 AM November 3, 2004

Update: I have found the printer of my dreams – the HP LaserJet 4300DTN. On Thursday, I set up a customer’s test environment, which including unpacking a brand new printer. From the moment I turned it on, the 4300 just worked. Sigh.

I loathe our office printer, and it hates me right back. I can tell by the way it picks up two sheets of paper at once, but pretends not to notice until it has conveyed the paper into its deepest and most inaccessible reaches. This is right over the toner fuser, which stays on for a few seconds after a jam, heating the paper to the point of brittleness, and ensuring the only way to remove the pages is in eight or twelve ragged strips. Every now and then, the printer also claims a burnt sacrifice of human flesh.

I also loathe our office printer because it is the outward and visible symbol of the Microsoft Windows printing subsystem. Here I present the specification for the Windows printing subsystem, reverse engineered by watching it’s behaviour over many battles:

  1. If there is no printer job, ignore the printer. Even if it is on fire, just ignore it.
  1. If you do have a printer job, and the printer is online, shovel the bytes out to the printer as fast as it will accept them. Then call the job done. If a user wants to know whether or not it worked, let them look in the output tray. If an application wants to know whether or not it worked, stuff it.
  1. But if you have a printer job and the printer is missing, jammed or on fire, tell the user that the printer is out of paper.

This aspect of the loathing is due to me working on an application that needs to know whether or not a particular page has actually printed. Our fourth or fifth design uses a hardware print server to expose the printer’s parallel port via TCP/IP. We use the Windows printer drivers to produce the bytes we need to print – Windows can be configured to print to a file instead of a parallel port – but then the application handles all of the sending and status testing itself. It works, but it’s ugly, and the operating system should be handling this for me.

The worst thing about the office printer is not that it doesn’t work, but that it only almost doesn’t work. If it plain didn’t work, it would be scrap by the end of the week. But because it limps along, because it can be made to behave if you cajole and threaten and tinker, it is allowed to stay. Crafty little devil.

You might suppose that I’m the leading advocate for printer replacement, but that position is filled by others with better qualifications than I. Our dear printer has a penchant for failing in the middle of large documents. Most commonly with a unique and artistic interpretation of the humble paper jam, but it can also fatally halt with “PCL XL ERROR.” It generally does this while a director is printing something to take to a meeting that starts in five minutes.

One day somebody will take that printer up the lift to level 11, then throw it down the middle of the stairwell. Bang, clang, crunch, splat, cheers and applause – our sanity restored.

By alang | # | Comments (3)
(Posted to Rants, Software Development and javablogs)
© 2003-2006 Alan Green