the day i discovered vim (2004)

Over summer breaks in high school, I worked an internship at a semiconductor company. My grandmother was an executive assistant there and had gotten me the job. This was fortunate, as I had no other qualifications.

The first summer I typed shipping orders into a computer terminal and delivered printouts to sales associates. I practiced writing their names in big, flowing cursive. I drank Styrofoam cups of coffee. I vowed to never again work anywhere with fluorescent lights.

But the next summer I returned anyway. This time I joined the “web group”, which I found exciting because I had recently taught myself PHP. My manager assigned me and two other interns the task of converting PDF documents to HTML. We would copy text from a PDF, paste it into a text editor, and add HTML tags. I wondered if we could automate the process (I had been programming video-games in C for four years now, so how hard could it be?), but didn’t know how to ask. I didn’t know how to talk to the other two interns either, because they were a few years older than me and I was shy. So I started writing HTML.

One day, I opened one of the HTML documents in Internet Explorer 5, which promptly crashed. We were running Mac OS 9, where programs (and often the entire operating system) crashed frequently. But this crash was reproducible – there was something wrong with that particular document. I showed my manager; she called IT support.

The next day, a man from IT arrived at the cubicle we interns shared. I opened the document in the browser. It crashed. I moved aside so he could use the computer.

And then he did something I had never seen before.1

A window opened with a blinking green cursor on a black background. Keyboard staccato. The HTML document filled the window. Keypress. A blue character appeared between two words. Keypress. It was gone.

He reloaded the browser, and the document displayed. “Okay, it’s fixed now,” he said, and left.

How? I didn’t know, but I was determined to find out.


  1. With hindsight, I think he probably ssh’d to Linux machine with access to the shared network drive, opened the file in vim or emacs, and deleted some non-ASCII characters. ↩︎