Learning to Program
The summer after fourth grade, my father got a HP-85, one of the early desktop computers. For context, this was about three years after the TRS-80 and the Apple ][ were released, when some manufacturers were working on smaller versions of the desktop paradigm. It used the same Z-80 processor as the TRS-80, had a built-in 6" monitor, a built-in tape drive, and a built-in register tape style thermal printer. If you left the printer paper in the sunlight, it would turn purple.
My dad told me that I could have my own tape for the tape drive (oooh) if I learned how to program in BASIC. I read through the manual and taught myself how to program over the summer. I don't remember any programs I wrote for that computer, though.
I remember that I went to three programming camps in middle school, but I don't remember much about them.
The first one was in Ruffner Hall at UVa. I remember learning Turtle graphics programming. I also remember putting "CRAIG!" on my name tag, and some of the college students teaching the camp getting a kick out of that because it was a mathematical expression (the factorial C x R x A x I x G).
The second one I remember very little about. I remember that we didn't have a computer at the time, and all the other kids did. Mom had kicked Dad out of the house, so the HP-85 was gone, but she hadn't yet bought the Apple ][ that she used in graduate school. I remember staying the night at the house of another boy at the camp who lived with his grandmother. The house was very grandmother.
The third one was at Tandem School, and it was a combination of nature camp and programming camp. This time I remember being (one of?) the only kids that did have a computer at home. One day we would go out and count everything we could find in a one foot square in the forest. The next day we would take that data and write a computer program to analyze it. This was where I first encountered Santa Paravia, which was very popular to play on the Apple ]['s they had. There was a computer lab full of them, upstairs where the library was when I was in high school there. I remember a big discussion one day about 'x = x + 1.' Most of the students were older than me, and had taken algebra. 'x = x + 1' is incorrect in algebra, but in programming increments x by one. I was completely lost during the discussion because I hadn't had algebra yet. I remember that Morgan was there, the older brother of Jason, my best friend in high school. I remember him as an instructor, but he might have been an older student.
I remember taking a programming class at Walker School during that time. It was in Pascal and was taught by Steve Jacobi, who I believe was a student at UVa at the time. In college I spent a summer programming a center-surround simulation for a psychology professor at UVa, and Steve was running the computers for the Psychology Department at the time. He and I would be in the lab late at night programming.
Steve had a programmable robot, and introduced us to the Wizardry programming game. Although I remember he got really mad at us when we went through the Wizardry box without his permission. Jason was in that class with me.
My mom got an Apple ][ when she was in grad school. I remember actually writing programs on the Apple ][. I wrote a black jack program that I got out of a how to program book my mom bought. That's where I got the shuffling algorithm I used for ages: generate two random numbers from 1 to n, and swap those two items. Repeat a lot. I remember fixing my Delta Sigma Phi's big brother Teeny's code with that algorithm. He was trying to pick a random number from 1 to n and add that to the list, as long as n wasn't already in the list. However, n was 500, so it was taking forever to randomly choose the last few numbers. It wasn't until I was in my 40s that I learned a decent shuffling algorithm.
I also remember writing my own text editor (which was really bad). I used it to write a pro-pirating letter to computer magazine under the pseudonym Doctor X while I was still in middle school, which they actually printed. Go figure. In high school I remember writing a program to calculate the ratios expected from Gregor Mendel's genetic experiments. I saw the pattern in the ratios for small n, and asked the teacher of my biology class if I could get extra credit if I could figure them out to n = 12 or something. Not believing I could do it, she said yes. I took me like a half hour of programming, and the end result was seven pages long.
I got Wizardry for that computer. My and my friend Trevor figured out where on the disk the program stored the map of the dungeon. We would randomly change bytes in the map file, and then go back into the dungeon to see how it changed. Once we figured it out we would rewrite the map so we could sneak through the dungeon to the best treasures.
I wrote my senior research paper, which was required to graduate high school. When I went to print it out, all of the memory chips in the computer simultaneously fried, and the computer died, giving me a minor heart attack. Luckily, I had saved the paper to disk, and I was able to take it in to the school computer lab and print it out. The paper was on infinity. I got an A from my English teacher for the writing, but a B from my math teacher for content. He didn't like that I took out a discussion of power sets, and how that proved that there were an infinite number of differently sized infinities. However, I had a 25 page limit on the paper, and I wanted to fit in a discussion proving that the Universe is a finite space of infinite extension.