Saturday, December 6, 2008

We Love Winter!

Despite a brutal windchill factor, the girls convinced me to take them sledding this afternoon at St. Francis Church. It was cold but we had a lot of fun!


Friday, December 5, 2008

When Did Programming Become So Boring?

When I was a kid in the late 70's and early 80's I got addicted to computers. Not just computers, but programming specifically. Some of my friends were really into the hardware, contrasting the benefits of the 6809 processor in their Tandy to the "lowly" 6502 in my Commodore VIC-20. I countered that I had the same processor in mine that the great Apple IIe had, so my computer must be just fine. We were all wrong, and in the end all of our little spats amounted to nothing. The Intel 8086 and 8088 CPU were the best, though none of us could afford computers (the IBM PC) that had those chips.

But how we loved our little computers, and spent all of our waking hours (including those we should have been sleeping), hacking on them, learning fast and furious. My best friend Dave was seriously into hardware, so he was always messing with electronics and built his own Heathkit computer. I was obsessed with how to program these little beasts, and buried myself in 6502 assembly language programming and BASIC.

I had a few books and a lot more magazines, and learned how to program by having Dave read source code to me from Compute's Gazette magazine while I furiously typed it into the VIC-20. We even developed our own variant of the English language to make this process go faster. For instance, Dave would say "Set C string to 1", to which I would enter C$="1". The intended end result was usually a simple game we could play on the VIC-20. The actual end result was often a complete waste of time, because either the program did not work, the cassette tape drive failed while I was trying to save our work, or the game was just plain boring. So it was a waste of time, right?

Not at all. Even though the program may not have worked, I was learning to program a computer. As my own knowledge expanded, fixing the bugs became easier, and finally second nature. I learned to recognize them as soon as I typed them and would say "Dave, you sure about that?" To which he would normally respond, "Sorry dude, that should be GOSUB not GOTO". The programs usually worked much better.

Eventually I got bored with typing in other peoples code and started coming up with my own creations. I learned about POKE and various other "advanced" programming concepts including CPU registers and memory mappings. So now I was changing the font that was displayed when I typed letters or making the screen show boobs in 4 colors. Life was good!

Then I learned a little more about hardware and made a circuit board with a relay (all purchased at Radio Shack for pennies of course) that I could send current to via a POKE into a memory address. Some address in the VIC-20 when set to 1 would cause a small voltage to go to the external expansion port. I learned it was enough current to switch a relay, which could then pass 12 volts from a car battery to a model rocket engine igniter. This was cool! Now I had a T Minue 10 Second counter program that when it got to 0 would launch a rocket! I was 12 years old and a freakin' rocket scientist!

The I got my mom to buy me a 110 baud modem so that my computer could calls Dave's, which was located 3 houses down from mine. We had to write our own communications software, so I wrote 2 versions, one for my VIC-20 and another I wrote on Dave's Tandy Model 3. It only took about 1 day to write the software, but probably 3 more weeks before our computers could actually "talk" to each other, but they did. Holy crap this was fun! We had two computers talking to each other over a telephone line! This was crazy stuff back then.

Then Dave got a girlfriend, damn him. Never to fear, my other friend Evan was as big a geek as me, though his area of expertise was in electronics, and bomb making. A couple software changes later, from Evan's computer we could launch a model rocket attached to my computer from the other side of St. Louis!

Could we put one of Evan's bombs in a model rocket and launch it from the Apple IIe lab at our high school? We did not know the meaning of "rhetorical question" at that age. The answer is YES! YES you can put a small bomb in a model rocket that has enough Estes D12-0 engines, and launch it from the football field while safely in the confines of the school computer lab. And yes, when the bomb goes off at 500' you can still REALLY hear it. Yes, even though we were laughing our asses off, we still managed to run all the way to my house before the cops showed up. We never got busted for that one, I'm pretty sure the statute of limitations is up by now.

That summer, probably the summer of 83', I got my first real computer programming job at the age of 14. My dad ran a bunch of jewelry department stores and they needed a way to print those little price tag things that are attached to rings and watches and such. Not only would I get paid $2/hour (probably by my dad, not the company), but I would get to program on the most excellent computer EVER MADE, my dad's company had an IBM PC! I could hardly wait for my first day of work.

My dad gave me the specifications, likely the first "Functional Spec" I ever had. 3 lines of text had to be printed on these little stickers, a stock or item number, some other number, and the price. I was sort of upset, it only took me an hour or so to create the software that would print those labels. I modified it to let people enter the information before printing, be able to print many of them at once, save their settings, etc. But in the end, it really only took me a couple of days before I had achieved what they needed. I fumbled around the office for a few more days, playing with the TTY machine and its thermal printer and 300 baud modem, and made my VIC-20 call the TTY and use it like a remote printer. It was fun, but the goal had been achieved. Back to $1.85/hour at Baskin-Robbins working for the child sex offender, Mr. Burns :-)

In late 84' we moved from St. Louis to Charlotte, NC. Nobody there was into computers. When I went to school I sort of learned why. I was in the 10th grade and they were learning the stuff I had learned in St. Louis in 3rd grade. For whatever reason, depression over moving, new friends that did not share my love of computers, something, I just quit playing with computers. I packed them up and put them away and did nothing with computers until 1988, when out of boredom in college I pulled my IBM PC Jr. out of storage and started banging away on it again. Fast-forward 20 years, I am still banging on computers.

I have often heard "The good old days were not as good as you remember", and this is probably true. I look back at that period of my life as some of the best times I ever had, though at the time it probably did not seem that way. 20 years from now I will likely look back on today and remember it fondly, though that is now it feels right now.

I miss the challenges of constant and rapid learning. Sometimes I even think I lack the desire or even ability to grasp new things. Maybe my brain is full, I cannot fit anymore "stuff" in there. New programming languages come along, new environments to play in, but it is all the same, over and over again.

New ways of doing the exact same thing I have been doing for 20 years. Show a screen, get the user to enter some stuff, validate it, show errors, dump it into a database, repeat. We had DOS with text mode screens. Show a screen, get the user to enter some stuff, validate it, show errors, dump it into a database, repeat. Then we had Windows and Mac OS. Show a screen, get the user to enter some stuff, validate it, show errors, dump it into a database, repeat. Now we have the web. Show a screen, get the user to enter some stuff, validate it, show errors, dump it into a database, repeat.

Where is the fun? Where is the challenge? When Did Programming Become So Boring?