Ted Leung on the air: Open Source, Java, Python, and ...
It's nice to see that Nat Torkington followed up on Julie's wish for interviews with people who became hackers (the good kind) as children (although I've noticed that a number of folks who were interviewed started a bit later in life). I don't know that I became a hacker when I was a kid, but I certainly got started with computers as one...
Before I was introduced to computers, I went through roughly one hobby or new interest per year. This usually involved me going to the school library and checking out all the books that I could find on the topic of the moment. Of course, I was limited by the number of books that I could have checked out at any one time.
In sixth grade, we had a presentation about computers in one of my classes. It involved making a computer out of a file folder. I remember cutting strips of cardboard to represent the program counter and a gluing on a sheet of paper for registers. For most of my classmates, this was a nice guest presentation, but I actually took the thing home and tried to write a few programs for it. I think that I barely knew what I was doing, but I was motivated.
The motivation really kicked in during the following year. The junior high school had just gotten its first batch of microcomputers, Apple II Plus', with around 4k of memory and cassette tapes for storage. There was even a quarterly elective for learning about computers. There was only one small problem. That elective was only open to eighth graders, and I was a seventh grader. Undeterred, I asked on of the math teachers if I could come after school and spend some time in the computer room. I think that he figured I'd come for a little while and then get bored, but it ended up that I came just about every day for the rest of the year. I read all the manuals that came with the computers and wrote small programs to play simple games. These were the days of Byte and Creative Computing magazine, and somehow I managed to get a hold of those magazines, which served as a rich source of information. I learned about computer hardware by comparing the specifications of various computer parts, figuring that the more expensive parts must be better, so I cobbled together some knowledge about RAM, processor clocks and all that. Of course, the content of the magazines helped as well.
Actually I do know where those magazines came from. Around the time that this happened, a Computerland store opened in a local shopping center, which was a huge event as far as I was concerned. Apparently, during my first visit to the store, I made a circuit of all the computers on display and crashed/locked up most of them. I don't remember this, but I have no doubt that it happened. The owner of the store told his wife that she shouldn't let "that kid" back into the store. And sure enough, the next time I came to visit, there was a sign on the door, stating that children under 15 (I was) needed to be accompanied by a parent. So I trudged back out to the car, and came back with my mother in tow. I bought some magazines there, and after more uneventful visits, things started to go better for me and the folks in the store.
Somewhere around this time, I started bugging my parents for a computer of my own. I was spending lots of time after school, and paying an occasional visit to Computerland -- learning what I could from the people in the store. Access to my own computer seemed reasonable, at least to me. For my parents, who had watched me chew through hobby after hobby, this was pretty disconcerting, I am sure. Especially since in 1980's dollars, the price of an Apple II class machine was a lot of money. In hindsight, I couldn't really fault my parents for turning down my request. Everything they had observed suggested that this would just be another of my one or possibly two year long fads. It was my grandfather who stepped in at this important moment (and if you don't think it was important, then you should read this on the impact of access to computers and involvement in free software - and software in general). My mother's father and I had a communications gap. He spoke Cantonese and very little English and I spoke English and very little Cantonese. Somehow my mother must have mentioned the whole business with the computer, and my grandfather agreed to put up the money for an Apple II Plus.
So off we trundled to Computerland to purchase a computer. The acquisition of a computer only served to further warm relations with the store folks, as I was now dropping more frequently to look at software and magazines. I think I probably talked to a few customers in the store, because I was there so much, but I can't really remember. All I do know is that one day, the owner's wife took me aside in the store and told me that they wanted to offer me a job working in the store. This was a young computer geek's dream come true (ok, so I didn't have very ambitious dreams). Not only was I going to get paid to talk to people about computers (which means I needed to learn all about everything in the store), but I got access to lots of computers, I got an employee discount so I could buy stuff much more cheaply, and I was in the store a lot. Out of all the benefits of working in the store, this last was the most important. In the early microcomputer days, lots of the customers of a Computerland store were microcomputer hackers. We had a guy who had written a Prolog for CP/M, several local consultants (like David Moskowitz), and other folks who were very knowledgeable about computers. Some of these folks took it upon themselves to improve my education. They'd suggest books to read, or tell me about stuff I had no idea about, - precisely the kind of stuff that was incredibly valuable to a young person interested in computers.
And some of these folks were real hackers (they liked to take things apart). I still remember some folks who used to stop in with games which they had bought, and subsequently cracked the copy protection on, just because it was there. I learned a bunch about Apple II disk I/O and booting from these folks, and I still remember the day when one guy was in the back trying to demonstrate how he could copy a disk using Nibbles Away, a bit copying program, when all of a sudden a siren started playing from the computer doing the copying. Of course, the writers of the copy protection had exploited a buffer overrun in Nibbles Away, yielding the police siren. I can still remember the looks of shock and astonishment.
Meanwhile, back at school, I was carrying on with my subjects. There wasn't much of a computer curriculum in those days, and because of my job, I had access to resources that were very rare in those days. Today, of course, any 15 year old kid can get on the internet and have access to a staggering amount of information. Even before computers I was involved in the science fair circuit -- I started out in electrochemistry (batteries). The fairs had a math and computer science category, so I began to enter projects in that category. I remember an assembler, and a compiler for a simple object-oriented language based on Smalltalk. Yep, Smalltalk. There is a now famous issue of Byte (my copy is still in a box somewhere in our garage) that detailed out the working of Smalltalk. (I had also learned a little bit about Lisp from Byte, but the coverage was nowhere as a good as the Smalltalk issue. It wasn't until I got to MIT that I was fully Lisp indoctrinated).
The fair that happened during my senior year was particularly important. It turned out that one of the judges worked for a company called Burroughs, which in those days, was a large computer company. This judge took an interest in the work that I had done, and managed to get me a summer internship at a Burroughs subsidiary near Paoli, which housed their Federal systems work, and a research group. I ended up working in the research group, where I saw my first VAX (an 11/780), my first Unix (BSD 2.9), and (Gosling) emacs. That summer I did some projects with lex and yacc, and in subsequent years, I was working on a research compiler for a combinator based compiler for a functional programming language.
It's been interesting to review the course of my involvement with computers as I've been writing this. I spent a few years working at Apple, fulfilling a childhood dream that was intimately involved with my introduction to computers. Lotus introduced the 1-2-3 spreadsheet during the time that I worked at Computerland, and rare was the machine that we sold without a copy. Today I'm working for the man who designed that highly influential piece of software. Hard to believe.
I was very fortunate that at almost every step of the way, there were adults who (one way or another) fostered my interest. Without them, I highly doubt that I would be doing what I am doing today. I owe them a debt which is just about impossible to repay. Over the years I've tried to take an interest in young people who are in the same position that I was in, like my friend Sarah.
School played a very limited, and if you are ungenerous, obstructionist role in all of this. Everything that I learned about computers I learned outside of the established school system, and I actually had to work around one of my (well intentioned, I"m sure) teachers. I learned on my own, and at the feet of actual practitioners. Perhaps it's not all that surprising that Julie and I have chosen to home school our kids. Some of you know that they've done a little Python, and they're just about to get started on Squeak (more on all of that in future posts). Whether they turn out to be hackers is not for me to say, but I'm at least going to do my best to make sure they got the kinds of opportunities that I got.
Posted by Trackback from Gurukulam at Tue Nov 29 07:31:15 2005
Posted by Kragen Sitaker at Wed Nov 30 19:01:56 2005
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
<a href>
, <em>
, <i>
, <b>
, <blockquote>
, <br/>
, <p>
, <code>
, <pre>
, <cite>
, <sub>
and <sup>
.You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk