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.

  • steve hawley

    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

    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

    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

    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

  • 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!”

    :-)