Turns out if you build an Apple ][+ clone in your basement, you can take first prize in your school’s grade 7 and 8 science fair. In retrospect, I (and my dad) assembled a computer from parts but clearly from the look on people’s faces when I showed my project, people thought we had designed it. In the future, I would come to better understand the difference but at the time I was happy to have people think what I had done was somehow very significant.
But, in a way it was. What I had was a computer but no real manuals which came with it. Doug provided us with a Dos 3.3 manual (which is visible in one of the pictures about the construction of the computer) and some photocopies of some other manuals. On the whole though, the machine was undocumented.
He did provide us with a bunch of disks of programs. I would experiment with these programs and figure out how they worked. For example, we had a copy of VisiCalc but no manuals. So, I experimented with it until I understood how it worked. Eventually, I had figured out enough that I helped my dad build a budget spreadsheet for the family.
I didn’t just experiment with programs. Any time I found a BASIC program on these disks, I would load them and read them. I would try to figure out how they worked. If I saw a command like “poke” in the text which I didn’t know, I would try to figure out what it did and why the program did it. I would try to change the program and see what happened.
The other place I was learning was from Nibble magazine. There were other Apple ][ magazines on the rack but Nibble was the only one I really cared about. If I remember correctly, I ended up getting a subscription so I didn’t miss an issue if I didn’t get to the store on time. Nibble was different because it was packed full of useful and interesting programs. They had a one-liner and two-liner contest where people would submit programs which were 1 or 2 lines of BASIC long but did incredible things. In many ways, it was similar to the Obfuscated C Contest because what these programs lacked in readability, they made up for in creativity.
Plus, the magazine had lots of long BASIC and machine code programs. I would type many of these programs in. With machine code programs, it was just a listing of hexadecimal numbers which I would enter into the Apple ][ monitor. Often, my friend Jeff would be over reading the hex numbers to me while I typed away. Often after entering everything and then running it, it wouldn’t work. With machine code, I didn’t really have the skills at the time to do anything except just check the hex digits against the listing. But with BASIC programs, I would start debugging it.
So, from this early stage, I had already learned two key skills which were and still are critical to my work today. First, there is no better way to learn than to experiment with something. Real understanding comes when you see how something works. Secondly, and probably more important for someone interested in software, read other people’s code. For me, I was reading all of the BASIC programs I could find. I would read them to see how they worked. I would read them to see what tricks other people used. And I would read them so I could change them and make them work for me the way I wanted. To develop these skills today, get involved in open source projects. Get the code to a project you are interested in. Figure out how it works. Try changing it. Did it do what you thought it would? If not, why not? Nothing beats getting your hands dirty, especially with someone else’s code.
But, I didn’t just program on this new toy I had. My next story will describe some of the other things I was doing with my Apple ][.