April

When I was a junior at Reed in 1986, Keithp and I pulled a nice April Fools' joke. I've told various people about April, but her story is probably worth writing down. I'm sure Keithp will correct me where I've gotten confused over the years; it was a long time ago…

Reed had a central computer that the students could pretty arbitrarily play with and work on. It was a VAX 785 (by that point) running 4.2BSD UNIX. It was awesome. There were some modem users, but the main point of contact with the VAX was the "Terminal Ward", a large room full of VT100 clones.

For instant messaging, we had "talk", a simple client-server app over which two users can communicate simultaneously. Each user types in a separate window, and each key they hit is made visible across the wire. Nice in some ways. If you want to try it out, "ytalk" is widely available today.

The night before April 1, Keithp and I spent all night hacking up a nice little demo app. Keithp hacked the talk client code up so that we could attach a Kalypso process to it. Kalypso was the Lisp interpreter Keithp had written with some design help from me; it featured a pure-functional Lisp subset, which actually was kind of a cool thing since you could play some great tricks with the language in that environment. Its garbage collector and some other stuff eventually found its way into Nickle. I should blog Kalypso sometime.

I wrote a little Eliza-like chat engine in Kalypso. Its simulation domain? The novice user. Like a Rogerian psychotherapist or a paranoid schizophrenic, the novice user has a limited, predictable vocabulary and often speaks in confused-sounding non-sequiturs. Better yet, we had domain knowledge from the Reed computing community to color the dialog.

The best part, though, was the typing algorithm. Remember, talk lets your chat partner see all your keystrokes as they are typed. The chat engine was wired to type its responses slowly. Really slowly, and randomly timed. Occasionally, it would typo, then backspace slowly over the typo. It was utterly convincing.

So we wired up April to pick a random user off the who list, and send a talk request. "Message from April on ttyD7." Unquestionably fair play. The prevailing culture being what it was, the target would always answer. "My computer is broken." Off it went. All of this was logged, so Keithp and I were watching the logs, half drunk from lack of sleep and laughing ourselves silly. Our sysadmin probably tried to help for twenty minutes. "Have you seen random user from the who list?" "Have you ever used BMDP?" "I hate BMDP. Everybody hates BMDP."

We cheated and hacked the talk server slightly, so that when the target quit it would print "April Fools from Bart and Keith!" before finally disconnecting. It was funnier when we were sure they knew someting odd had happened.

The code is sitting on a 9600bpi reel tape in my room. It's possible some data recovery place could get it back off, but I doubt it.

At least I can still read some of the memories.