I was listening to the audio presentation by Woz at ITConversations.com recently. I was really interested in his stories about how he got interested in hardware hacking, and it made me reflect on my early experiences with computers.
My dad, a maths/science teacher, got into computers when I was very young, in the mid-70s. He’d helped organise time-share access to a mainframe at the local university for his students, and ended up buying a Commodore PET for home. He’d tried teaching himself programming in BASIC, and left some of his books around the house.
Naturally, most of them weren’t very interesting for a 5 year old, but there was this one book aimed at younger children (8-9), which Dad was looking into for a primary-school based course. I picked it up and flicked through it – I remember that it had lots of cartoons, and explained how to program in BASIC. There were a number of exercises that I worked through, but the last one was a doozy: it was a flowchart of how to feed an elephant. It was the only exercise in the book that didn’t have an example of how to implement it, but I didn’t care. I like the idea – a computer telling you how to feed an elephant (Step 1: get an elephant!), so I sat down and I wrote up the program. I showed it to my Dad when I got it working, and he was amazed. Not bad for a five-year old at all.
I liked computers a lot as a kid – they were fun to muck around with. But I didn’t really take on any large projects. The biggest challenge I took on as a child was about two or three years later. By this time, Dad had upgraded to an Apple II, and there were mass-market computer magazines coming out. I picked one up every now and then out of curiosity. Anyway, one that I picked up had the complete source code for a “Choose-your-own Adventure”-type game. The source code was intended for a different type of BASIC than the Apple’s (I think it was for the Vic 20), but it had annotations on how to get it to work on other computers, including the Apple II. This was a large program, as far as I was concerned: it went for over 20 pages all up, and it took the better part of a week to type it in.
Naturally, it didn’t work. That was when I realised that these computer things were hard. 🙂 I checked and re-checked that program, looking for my typing mistake (I wasn’t a good typist then – heck, I’m not raealy thta god now), and I found a few, but it still didn’t work. I got really frustrated by this – I’d spent a lot of effort, after all. How dare it not work! Anyway, I’d shoved the floppy disk with my source code on the shelf and tried to forget about it, but the problem kept sticking in my mind. Every so often, I’d pull it back out and try to figure out why it didn’t work. In the end (about 3 months later) I realised that the program as written just wouldn’t work on the Apple; the magazine was wrong. And I figured out what it was doing wrong, and got it mostly working. I never got it completely working, though – I knew the puzzles in the game too well, and it got boring. It didn’t have a Save feature, either, so it was tedious to play through the game to the most recently fixed part to see if it really was. This experience made me realise that writing programs was easy – it was getting them to work that was the hard part. 🙂
I also played around with LOGO, but that didn’t really leave much of an impression (though driving the robot Turtle around the floor was fun).
When I was in my early teens, I decided to teach myself Pascal. We had a Mac at this time (the 512KB one, I think… the SE came along later), and it had a Pascal compiler. I had a book (another hand-me-down from Dad) called Elementary Pascal: Teach Yourself Pascal by solving the mysteries of Sherlock Holmes, and worked through it. Fairly interesting stuff, if a bit dated, but it taught the basics quite well. I moved on from there to some display hacks (boy, QuickDraw was fun to fool around with), but I didn’t have much of a practical use for it, so it sort of slid by.
Then, around my mid-teens, with the end of high school coming up, I had to decide what I wanted to do at uni. I was a high-achiever student, so there was some expectation for law or medicine, but neither looked that appealing to me. I thought maybe engineering, and I was flipping through course guides and came across the Computer Engineering course at UNSW. This looked like something worth doing to me, so I put it down as my first preference, a couple of other computing courses at different unis, and the one at NTU. In the end, I went to NTU, largely because I got a scholarship and could live at home (meaning I wouldn’t need to work), found out how fun programming computers could really be, and also found out I was more than a little good at it. The rest, as they say, is history.
It’s odd how random events in your life seem to carve out a destiny in a way. 🙂
 Northern Territory University. Since renamed Charles Darwin University, apparently.