Sun

Nov 20
2005

Nat Torkington

Nat Torkington

Burn In 1: Karl Fogel

The second story in the series of stories about how alpha geeks got into computers in the first place. Next up, Karl Fogel. He wrote the definitive CVS book, was one of the forces behind the Subversion project, and just released Producing Open Source Software.

Karl Fogel's Story

How I got into computers...

It's not the usual story, I guess. When other people my age (34) get nostalgiac for their old Apple IIs and Commodore 64s and 300 baud acoustic coupler modems, I get teary-eyed right along with them, but it's only for show. I never experienced those things directly. Most of my friends did: they were into the BBS scene, and I could tell something deep was going on, because they all talked very excitedly about what the Sysop had done to so-and-so, the files they'd uploaded, etc. I enjoyed the sense that they were doing something new and interesting -- that our parents didn't understand -- but I wasn't really part of it, except vicariously.

This was in the mid-1980s. My family was well-off, and I'd asked my parents to buy a computer, because I wanted to join the world my friends were in. But I'd also asked for a piano. My parents thought about these two expensive items, and told me I'd have to choose. I reasoned that one can learn computers anytime, but with piano, the sooner one starts the better, so we got a piano, and I spent high school becoming a musician instead of a programmer.

I entered college as a musician too, at the Oberlin Conservatory in Ohio. Oberlin has two halves: a music conservatory, and a college. Because some of my friends were in the college's Computer Science Department, I ended up hanging out in the CS lab a lot.

It's hard to explain what happened next...

The Oberlin College Computer Science Department was a hotbed of free software activity in the early 1990s. The students helped maintain the department servers, installing GNU programs and documentation, and tutoring new students in how to use them.

Now, by this time my family had a computer and I understood how programs worked: you started them up, they did something, and then you shut them down. If you wanted something different, you shopped around for a different program.

So I still remember the shock that went through me the first time I started up the GNU 'info' browser on the CS systems. The screen gave a few basic instructions for navigating the Info hyperlinks, then below that it said: "PLEASE ADD DOCUMENTATION TO THIS TREE. See blah blah blah for instructions on how to do so."

Somehow I understood the real message: the system was inviting me to improve the system! No computer had ever done that before. It had never occurred to me that the system documentation was just files, no different in principle from the files I saved from my word processor when writing a paper for class. But when I saw the Info tree inviting me to make it better, I suddenly understood. Perhaps it is only one of those ex post facto artificial memories, but I recall that I formed a tentative hypothesis then that the *entire* system worked this way, and that if I learned the right technical details, I could Make Things Better too. Testing this hypothesis became my highest priority; in some ways it still is.

The other important factor was, in retrospect, perhaps a sad commentary on the nature of progress:

College dorms were not networked then. If you wanted access to the CS servers, or even just to check your email, you had to go to the Computer Science Lab. This was a small room with twenty or so workstations, mostly 9600 baud text terminals but also a few graphics workstations. So at any hour of the day or night, you could wander into the Lab and find other CS students, working on programs, or installing some new software on the department's servers, or just hanging out.

I realize now that we had caught a brief, golden moment in time. The Internet was up (though the WWW wasn't), but networking had not yet penetrated to every corner of life. Those wanting to get serious work done on a computer were forced to be in the same room with each other.

This had a tremendous effect. People shot questions across the room; people traded code; people came and looked over each others' shoulders and offered tips on how to use the editor (usually Emacs) better; people maintained files of hilarious quotes overheard in the Lab, and wrote programs to serve up a randomly chosen quote at login time. People played games together, did their homework together, designed cool hacks together, explored the nascent Internet together.

It was a true programming community. Shortly after my epiphanous encounter with the Info browser, a Lab regular named Jim Blandy (now a GDB hacker at RedHat) pointed me at Richard Stallman's GNU Manifesto, and I remember reading it and thinking "Yes, I understand, this makes total sense." At the time I didn't know why, but now I think I do: the GNU Manifesto made sense because I was already living in a sharing community. And since my first exposure to computer programming took place in that environment, I simply assumed that kind of community was the norm.

The combination of an explicit philosophy of sharing and daily interaction with other hackers proved intoxicating. I threw myself into computers. Early on I went through "larval stage", a months-long coding spree in which I learned the basics not only of programming but of talking to other programmers, helped along by some of the more experienced coders in the Lab.

I never majored in Computer Science, because by that time I would have had to spend an extra year in college to complete the requirements. But I was in the CS Lab as much as any CS student, and in fact some of the professors just assumed I was majoring in it, to the point where they eventually hired me to grade and tutor some introductory classes. I took a few classes, too, but since it wasn't my major, I had the luxury of selecting just the ones that looked most interesting. This is a great way to learn a subject, IMHO: an eager student in the right environment will instinctively know how to design a good curriculum.

After college my first jobs were in free software, and (except for a brief interlude) that's what I've been doing ever since. You asked about my "path to world domination". Well, I guess I want the whole world to be like the Oberlin CS Lab was: a sharing community where people assume that improving the system is within anyone's reach.


tags:   | comments: 5   | Sphere It
submit:

 
Previous  |  Next

0 TrackBacks

TrackBack URL for this entry: http://blogs.oreilly.com/cgi-bin/mt/mt-t.cgi/4386

Comments: 5

  steve hawley [11.23.05 06:40 AM]

Minor corrections - the main systems which were acessible trough 2400 baud terminals were also accessible via phone. If you were like me, you dismantled the phone on the dorm wall to install a modular jack in addition to the phone so that you could hook up a modem.
That done, it was possible to dial into the computing center and connect to the machine you wanted. When the lab was packed with students working on Pascal assignments, it was more practical to work from your room.
However, you are exactly right in that we (that is the majors) tried to establish an environment that was collaborative and constructive. We really wanted ourselves and others to be able to scale the learning curve faster. If you didn't get continuation passing in Scheme, there was someone who did and who would help lead you to enlightenment.
In addition to the work environment, the CS profs were highly supportive of independent study in topics that weren't part of the major. I did independent studies that involved the implementation of a FORTH compiler, a lazy-evaluation lisp interpretter, and a ray tracer (which I did with Jim Blandy -- our advisor required us to not work on it. Yes, you read that right. We had strict limitations on how much we were allowed to work on the project since our advisor immediately recognized that left unchecked we would let this project consume all available time)

  Jim Blandy [11.24.05 10:57 AM]

I can corroborate everything Steve says. Except for the part about dismantling his dorm room phone jack; there, all I can say is that it would have been completely typical of him. :)

  Jim Blandy [11.24.05 11:50 AM]

I can corroborate everything Steve says. Except for the part about dismantling his dorm room phone, but that sounds typical. :) It was definitely a "let fun stuff consume all available time" kind of environment.

  programmer_guy [11.18.06 02:29 AM]

Hey Karl... you had it good.

I had to use an IBM keypunch machine in college (submit job card stack with rubber band to IBM 360). These were the old Hollerith 80 collumn cards.

Best regards

  Karl Fogel [04.02.07 02:37 AM]

Hey programmer_guy,

"Luxury. We used to have to get out of the lake at six o'clock in the morning, clean the lake, eat a handful of 'ot gravel, work twenty hour day at mill for tuppence a month, come home, and Dad would thrash us to sleep with a broken bottle, if we were lucky!"

:-)

Post A Comment:

 (please be patient, comments may take awhile to post)






Type the characters you see in the picture above.