Today’s moment of introspection came this morning. After some time spent updating my twitter feeds and answering emails, followed by my regular commute (where I forgot to pick up my prescriptions, doh!), I realized something:
I don’t think I am a hacker.
I used to think that I was. Back in the early 1980s, I was living in Oregon, first in the Portland area, and later in Eugene as I entered the University of Oregon as an undergraduate in their CIS department. While it had a respectable program, it wasn’t particularly innovative. I took my first official class (CIS 201) which used Apple IIs running a Pascal like language called Karel, which was meant to teach you programming by directing a little synthetic robot around a grid. It was staggeringly easy (by that time, I had been programming microcomputers for about 4 years). The instructor decided that he’d give us all the assignments for the class on the first day. I completed them by the third day (could have done it in one day, but limited lab times) which freed up a substantial block of time for me to wander around, trying to find other machines I could use, reading books and magazines in the computer reading room, and generally pursuing my own interests. I took lots of dreadfully boring classes as well: on FORTRAN and COBOL (yes, I’ve taken a COBOL class) using their DEC 1091 and their IBM 4341. By midway through my sophomore year, I had exhausted the undergraduate program of anything remotely interesting, and decided on the spur of the moment to enroll in a class on compilers, taught by Professor Ginnie Lo. I had an ulterior motive: taking that class would give me access to the departments VAX 11/750, which was running Unix, about which I had heard a great deal, but had no practical experience at all. The first day, she was calling roll and came to my name. I raised my hand, and she looked at me and said “Did I give you my permission to take this class?” to which I replied truthfully “no”. To her credit, she merely went back to calling roll. I learned a lot about compilers and Unix. I developed a bit of an obsession with computer languages. I learned to program in C. I found a small number of others who shared our fascination, and we rapidly became friends and room mates. It was a great time for me intellectually, even though I was struggling with three jobs and a full class load.
Ah, back to the hacker thing….
One thing was obvious: I seemed to be different than the majority of other students. Outside of our inner circle of over-achievers, we saw lots of people who were good solid students, but which seemed to lack the inner passions that we felt, the nearly maniacal obsession to understand how we could use these machines to achieve new things. We craved access to computers, and spent a lot of our time trying to find ways to gain access to hidden computing resources, or resources that were reserved for a select few.
Amidst this, I read Steven Levy’s book “Hackers: Heroes of the Computer Revolution”. And I finally had a name for what it was we were.
Levy espoused a hacker ethic, which I’ll reproduce here from the Wikipedia page on his book:
- Access to computers—and anything which might teach you something about the way the world works—should be unlimited and total.
- Always yield to the Hands-on Imperative!
- All information should be free
- Mistrust authority—promote decentralization.
- Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race or position.
- You can create art and beauty on a computer.
- Computers can change your life for the better.
It’s hard to say how transformative this book was for me. I had stumbled into some of these principles more or less on my own, but now I had a name for them, and some inkling that other people were doing the same thing in exciting places elsewhere in the world. Until then, I had mostly thought that the path to success in school was to do well in my classes. While I enjoyed the extra-curricular work I did, I never saw it as anything more than a distraction. But post-Levy, I understood that my extra-curricular activities were actually the important stuff and that there was no reason to postpone doing the interesting stuff. My friends and I wrote programs, both together and as singular endeavors. We shared code and experience, and we got better. I became interested in computer graphics, and started writing ray tracing programs. I used USENET to make contact with other people interested in ray tracing, and we shared information and built on each others experience. It was awesome.
So, why don’t I think I’m a hacker?
Up until a few years ago, many self-identified “true” (in the Levy sense) hackers were irritated that the press used the term to indicate those who break into computers or computer networks. This is no doubt in no small part because of the antics of Kevin Mitnick, who was perhaps the first computer criminal to reach the attention of the general public. While some were certainly interested in computer security, it was (I suspect) initially mostly to gain access to computing resources and to measure their extent, not to commit crimes or fraud. Most of those “hackers” were actually posers whose skills were commonly fairly mundane and uninteresting. Years later, we’d have the term “script kiddie”, which is an accurate portrayal of 99% of all “hackers” of this sort.
I’m not one of those.
But in the last few years, we’ve seen another use of the term: exemplified perhaps most clearly in my head by Paul Graham. While Graham has made some interesting technical contributions, he’s widely known now as an essayist and as a venture capitalist heading Y Combinator which specializes largely funding web based startups. As a result, it has become somewhat fashionable to use the term “hacker” as synonymous with “any programmer who is working in the web space, especially on social networks, and especially in start ups”. I’m not actually a fan of his essays. Most of what he says that I think is true were said better by people like Brooks, and most of the rest I think is self-serving egotism.
I’m not like him either. Sadly, that means I’m not as wealthy either.
For me, my hacking is the internal struggle to make my brain a more interesting place to spend my life. I am interested in lots of stuff, and it turns out that a computer allows me to explore these things. In almost every case it is “boldly going where others (usually smarter) have gone before”, but the effort of actually examining the details is pleasing to me.
As an example, I have a directory on my computer which I call “play”. I use it to store most of the trivial and not so trivial programs that I enjoy writing. It’s got about 300 directories in it now (not all are code that I’ve written, some of it is code from others that I’ve found inspiring). It includes things like the original raytracer I wrote in 1986, which I occasionally still hack on, and its successor that I wrote a few years ago during the week between Christmas and New Years, and which hopefully integrates some of what I’ve learned since 1986. I’ve got a program that I wrote to count all the primes to 10**12 or one that implements bignum arithmetic using the Fast Fourier Transform. I’ve written and blogged about my checkers program Milhouse. I’ve written a library in Python for computing the location of Earth orbiting satellites. I’ve written a PDP-1 emulator to play Spacewar! I have written a small compiler that takes in scripts and outputs randomized test sessions to learn Morse code by using speech synthesis. I’ve written several simulators for the Enigma machine, including one that runs on the Atari 2600 video game. Fractal image compression. Volume rendering. Stuff that draws wireframes of globes. Extracts nice 256 entry color maps from photos. Sends and receives slow scan television. Finds and downloads tagged images on Flickr. Aligns frames from my video of Mercury transiting the surface of the sun. Computes the Ronchi pattern for testing telescope mirrors. Computes the diffraction pattern for off-axis parabolic reflectors. And dozens more.
I used to think that made me a hacker.
Perhaps the better word would be “crazy”.
I still have a copy of the compiler we wrote for Ginnie’s class. It’s sitting here in my office at work on a 9 track tape. Something tells me that it will never see daylight again which is a bit of a pity, because I think we did a really good job on the lex equivalent (it wrote out a non-table based C program because we wanted to be different and we loved to mess with Ginnie). I found myself thinking about it the other day, wanting to try it out on something I was working on.
Levy’s attempt to define the “hacker ethic” adds some ideological components that I don’t think are really central to what being a hacker used to mean (although hackers do tend to gravitate toward those ideological beliefs). What I always thought “hacker” meant was someone who had to know how things work, and had to play with the workings of things. Computer programming just happens to be a compelling playground for someone with that kind of mind, but there were hackers before there were computers and hackers who don’t write programs. In that sense I’d say you’re still a hacker.
I remember you telling me about that compiler you helped write, with its lexer named Lax and its parser named Yuck (puns, of course, on the traditional UNIX lex and yacc).
Yes, Mark, you are a hacker. And crazy, to boot. In a good way.
Follow your passion. Beats the heck out of doing what you don’t like, because someone else expect you to, and I personally think that a hacker (in the honorific sense) needs to be restricted to people who dream in code..because it’s fun.
And…hi guys! Sure loved being at UOregon and those late night coding sessions.
Best,
Dak