Sunday, March 05, 2006

More Zeros and Ones

I never make stupid mistakes. Only very, very clever ones. ~John Peel
As the ENIAC story illustrates, information technology is funny to those of us who work with it up close and personal. CIOs and directors probably don't see the humor, but then I don't think any part of their job is fun, so it's understandable that their sense of humor is lacking. One example of silliness, involves the infamous “Richard Keil Memorial Abend.”
“Abend” is short for Abnormal Ending, which computer jargon for, “Oh, [expletive], it crashed.” The term originated in the mainframe world, but it carried over into the network server environment. When Novell released version 3.12 of their Netware server software, it was a very good product. But, even good server software crashes now and then, so sysadmins would occasionally be confronted with abend messages on their servers. Usually, these messages were cryptic, but gave some hint about what happened. After 3.12 was released, though, on rare occasion, they might see “Richard Keil Memorial Abend #27” flickering on their monochrome server displays. Since Novell was not known to be a humorous company, people feared that a virus had gotten on the server.
This was big news, because viruses were something that hit Microsoft products, not Novell. This was partly because Novell had better security and partly because Novell's Network Loadable Modules (NLMs), programs that run on the server itself, were so tough to write that virus writers didn't even try.
It wasn't a virus. It was a joke that wasn't supposed to have been there.
Programmers get bored. When writing gobs of code, especially with deadlines approaching, a programmer will occasionally allow himself a little levity. I don't program anymore, aside from the odd script to automate some task, but some years ago, I wrote a rather involved series of database programs. As part of the debugging process, I would have to add some sort of message to let me know exactly where a problem occurred. After a while, plain jane error messages got to be a drag, so I'd get creative, like “The damn program crapped out on line 335 again!” Once I fixed the problems, I removed the silly messages.
The Novell programmer did the same thing. He was working on a section that was the responsibility of a Novell engineer named, you guessed it, Richard Keil. He embedded the error message in several places, and, after everyone had their chuckle, he removed the references to Mr. Keil. Or, at least, he thought he did.
Unfortunately, Netware is a lot more complex than my little database programs. The error message was called in several places. The programmer missed one. Or more. Or maybe he thought the problem was resolved, so the error would never occur, so he didn't removed the references at all. Whatever the cause, Novell 3.12 went out with the “Richard Keil Memorial Abend” hidden in it, ticking like a time bomb.
I imagine Novell management was not amused when sysadmins started panicking about what this strange reference was. They ordered that a patch be issued to fix it. But the error was pernicious; despite promises that various patches would remove Richard Keil from your server, he kept popping up. They actually issued on patch that was supposed to do nothing but remove ol' #27. I'm not sure they ever did clean it up.
Eventually, an entire mythology sprang up around the “Richard Keil Memorial Abend #27.” One version was that Keil had been fired, and the programmer was leaving a tribute. Since Keil's name turns up as co-author of a document written several years after 3.12 was released, this would appear to be false. Another story came along as a result of a typo. Somebody typed “Keil” as “Kiel”. It turns out that Richard Kiel is the actor who played “Jaws” in a couple of James Bond films. The abend, then was a tribute to him. Why someone at Novell would embed a tribute to a guy with steel teeth was never clear, but the story grew legs to the point that the misspelled version of Mr. Keil's name is as common in Internet postings about the message as the correct spelling.
Ironically, you can't find the information about the abend on the Novell site anymore. Version 3.12 is no longer supported, and documents about it have been moved to some dusty archive area. One would think such a memorable event would rate its own section in the knowledgebase.
I saw the error myself. It would occur on a particular server whenever a tape was inserted into the tape drive. It even happened when a cleaning tape was used. It was amazing enough that you could crash a server with a cleaning tape. Generating the “Richard Keil Memorial Abend” was a bonus.
They don't make errors like that any more.

Wednesday, March 01, 2006

Zeros and Ones

The main impact of the computer has been the creation of unlimited jobs for clerks. - Peter Drucker
ENIAC, the first electronic computer, is sixty years old. I appreciate that for two reasons. First, thanks to ENIAC's descendants, I get to have a job that I enjoy. Second, ENIAC is older than I am, which makes it about the only thing in my career field that predates me.
There's a story about ENIAC that I love. It was retold by one of the guys who was there on a PBS series about computers and has turned up on other programs, so it's apparently true. Besides it's funny.
There came a day when ENIAC was ready to go public, so it was decided to hold a press conference and demonstrate the machine’s capabilities. I don't know if you've ever seen an old-style mainframe or the kind of demos they used to do, but, frankly they weren't very impressive. You walked into a big room with (in years after ENIAC) lots of tape drives, card readers, and printers. People always assumed that these were the elements of the computer. Of course, they're just peripheral equipment. The computer usually looked like some sort of electrical cabinet. Unless it was open, it was featureless with possibly a power light or two on it. The demo would consist of running a short program to calculate 7 to the 22nd power, or something else for which no one would happen to have an answer handy. They'd feed the cards, the printer would buzz back and forth, and the answer would appear.
The ENIAC bosses, who had an understanding of media that was ahead of their time, told the engineers that they needed to have something going on that made the computer look like it was doing something. Anything. Just make it look active.
The engineers scratched their collective heads, when one of them got a brainstorm. He designed a panel that would have a bunch of numbers on it that would light up while the computer processed the program (it calculated ballistic trajectory tables). They built the panel, taking ping pong balls that had been cut in half, painting the digits 0 to 9 on them, and gluing them over little light bulbs. To this day, when you see old film of ENIAC, you see this dopey light display blinking away, doing nothing whatsoever, but it blew the reporters away.
Strangely enough, I would steal that concept about 50 years later.
Back in my contractor days, I worked for the State of Alabama Department of Human Resources. A new DHR commissioner had taken charge, and after a couple of months, he managed to find some time to see the IT unit. Our DHR boss came to us and asked that we make everything shipshape and prepare to give a tour for the commish. Now, server rooms are even less exciting than mainframe rooms, because we don't even have the big tape drives, and even ten years ago, the only printer we had was a nice quiet laser printer. In other words, all the commissioner was going to see was a bunch of cabinets with black boxes in them and monitors with screensavers running. So the guy who was giving the tour (Greg, one of my fellow contractors) came to me and said, “Can you write some sort of looping batch file that will make it look like something is going on in here?”
No problem. I sat down and wrote a little program that copied some files to a directory, deleted said files, then copied them, then deleted them, and so on. I added a few computer-like (“Process running…”, “Execute”, ”Ready to Receive Data”, and such) phrases to the screen output and set the thing to running on a PC that was in the midst of the racks.
When the tour started, I was sitting at my desk. My view of the entourage was blocked, but I could tell from Greg's patter where he was as he moved past the equipment.
“These are our directory synchronization servers. Over here are our data servers. Over here we have servers that link with the mainframe.” The PC was sitting between the data boxes and the mainframe linkers, and we had agreed he shouldn't call any special attention to it because it wasn't really doing anything. We just figured that the commissioner would see some activity and leave it at that.
I could tell they had passed the PC and was breathing a sigh of relief, when I heard the commissioner say, “Wait a minute. This one looks really busy, What's it doing?”
Our DHR boss, who hadn't said a word to this point, recognized that he had never seen this activity running before, so he chirps up with, “Yeah, what is that thing anyway?”
I heard Greg cough. “Well, erm, that's a utility routine that's running, um, doing a series of file transfers.” Well, sort of, yeah.
The commissioner was very impressed. Our DHR boss was impressed. And I said a little silent “thank you” to the ENIAC guys.
Now you understand why Microsoft has twirling hourglasses and dancing icons all over the place. If they didn't, people wouldn't think that the computer was doing anything. If Greg and I could figure out that stuff moving on a screen made a good show, Bill Gates sure could.
Personally, I think ENIAC's ping pong balls were cooler.