Thursday, December 20, 2007

Reflections

Usually this time of year you start reflecting on things that have happened over the last year. Review the good and the bad. Things that sucked and things that ruled. Things that made you laugh and cry.

Well, these days I can't keep up with anything. I can't even remember if that iPhone thing came out this year or last year. I remember buying the new Harry Potter book at 1 am and I think it was cold outside. Or maybe it was wasn't. Was that this year?

My memory is terrible sometimes.

Regardless, the other day I was thinking about all the technologies that I have learned (and forgotten) over the last 25 years. I'm pretty sure there are more. Maybe someday I'll remember one and write about it if I can remember enough. But in the meantime here are some of the highlights and lowlights of my software development career:

1980: This Oregon Trail game on the Apple ][ game is really cool! But I think it needs some modifications. After a quick check with the Apple Basic manual I punch in "LIST" then "20580 PRINT "YOUR OX PEES IN RIVER. LOSE TURN SEARCHING FOR CLEAN WATER." Then "20590 GOTO 10". Ahh, so much better. Then "SAVE OREGON" just so everyone else can enjoy my little modification. Hope the teacher doesn't find out.

1985: It's the BBS heyday. After having pirated GBBS and run it on my 300 baud modem I got bored with it and wrote my own multi-forum BBS. A friend of mine wrote the low level driver for the keyboard entry. He even wrote a nifty text-based tennis game for me. Hey Jordan Lampe, if you're out there drop me a line. This is King Arthur. Ahh, those were the days.

1986: Apple Pascal RULES. It's the coolest thing on this planet. I taught my Pascal teacher at High School how to program. He gave me a C. Ingrate. Seriously. I wrote a freaking adventure game IN CLASS while he taught everyone else how to code up an addition problem. What? You're supposed to be writing an addition problem instead of an adventure game? Doh! Maybe I deserved that C after all.

1986: College. Woot! Upgrade to a 80286 PC and sell my Apple ][ to a farmer. Then take Art History, Calculus, Latin American Studies, and English Literature. No programming, but I get to use that awesome Word Perfect word processor and then copy my documents to a 5" floppy so I can take them to the computer lab to print them on a high quality dot matrix printer.

1987: Macintosh computers RULE. Sure wish I could afford one.

1988: Start taking Pascal classes. Sleep through Pascal I and II. Get A's. Take Fortran. Why? Because the scientific community uses it a lot for it's awesome math library. And they're working on the new Fortran specification. It could be huge. Go to class three times -- first day, mid-term, final. Get an A. Wish I could do that for my Shakespeare classes.

1990: Ok, so upper level Computer Science courses get hard. Really hard. I can't skate by and skip class anymore. But they're at least teaching C++ and object oriented programming now. That's fun. Wonder how this is going to affect that new Fortran specification?

1991: Take computer graphics class and learn how to do cool 3D programming. Coolest thing I've ever done. Write my own 3D object displayer/rotator. Of course, not knowing crap about the Macintosh GUI and event driven programming I create my own buttons with 3D effects (hah! take that Apple - I went 3D buttons on a Mac before you did! plblblblblbllbbl....and, yeah, it was a ginormous waste of time). Write it in Apple Pascal. Pascal kinda sucks.

1992: Re-take assembly language class. God I hate assembly. WTF invented this devil spawn bastard child from hell? Yeah, it's better than punch cards but COME ON.

1992: GRADUATION!!! Booyah. Computer Science degree from the University of Minnesota. I'm living large now, baby.

1992: This job market sucks. Thanks, Bush. Why did I vote for you again?

1992: YES!! I got a job. And HELLS YEAH I get to use OS/2 instead of that girly Windows application. Get immediately put on a project to write a DLL for a program that will run on that girly Windows application. Oh the irony.

1993: Borland C++ is pretty cool. They really thought things out when they made it. Windows programming is soooooo easy. Making a DLL? Piece of cake! Making a GUI? No problem! This is going to revolutionize Windows development.

1993: This new Visual Basic thing is kinda slow but you can put together a GUI in about 5 minutes. Click, click, click, drag, click, drag, type some text. Voila! Instant GUI. Making a GUI in Borland C++ kind of sucks now. If you need some speed just put the code into a DLL and call it from your VB app. No problem. Everyone's happy!

1994: Borland? Who's that? We do everything in Visual Basic.

1996: God Visual Basic is slow.

1997: There's this new thing called Forte. It uses an object oriented language called TOOL. You can distribute your code! You can write a "service object" and just say "run this on the server" and it will run on the server. Your client automatically finds it an uses it! SWEET. This is going to revolutionize enterprise Windows development the same way that one company did back in 1993.

1998: Heard anything about that new Fortran spec lately?

1999: Still using Forte. The IDE sucks, the debugger kind of blows, but you know what? It's pretty decent at this distributed system thing. Can you imagine trying to do this with .NET? Life. Is. Good!

2000: Well, not so good. The web app piece of Forte isn't very good. Matter of fact, our web app is so big it's just simply not going to work. This thing called Java is getting a lot of press and a lot of companies are starting to use it. Let's take a chance and rewrite out web app with it. Not sure it's going to work out or be the right thing but there really aren't many other good options.

2001: Ok, so how do we get our Java servlets to talk to our Forte services? CORBA! Forte will dump out a file that we can import into Java so that we can easily write some CORBA middleware to transfer objects between Forte and Java. Cool! This Java stuff rocks.

2002: We're going to Windows XP. Was there something wrong with Windows 2000? This GUI sucks. It looks like I'm Teletubby land. Can I go back to the classic look? BTW, Java kicks ass.

2002: Well, somewhere around 2002. Sun buys Forte. Why? Are they on crack?

2003: Wow, it's been 10 years since I used OS/2. The only reason anyone ever used that is because Windows was such a pile back then. GPFs, Blue Screen of Death...You got none of that with OS/2. It was rock solid. Then along came NT 3.5 and the whole world shifted. NT was such a great product. Lean and mean and a kernel that never ever crashed on me. I went years without having it crash. Matter of fact, between NT 3.5, NT 4, 2000 Pro, and XP Pro, I don't think my PC has crashed due to anything but a hardware failure.

2004: Sun announces they are dropping support for Forte in 2006. Everyone has 2 years to convert all their stuff. And, by the way, we have this other product called Java that is a real good thing to convert to. Good luck!

2004: We look into converting our Forte apps to Java. All 3,000,000 lines.

2005: Turns out that the new Fortran spec was released in 1992 along with minor revisions in 1995 and 2003. Who knew? Now where did I leave that Java certification study guide?

2006: What a waste of time. I spent all that time studying for the Java Certification only to realize that so many people have one it's practically meaningless. And I really didn't learn anything. Anybody want a Java Certification study guide for $5? $3?

2007: Well, we're paying for Forte support from Sun now. We still have 3,000,000 lines of code to convert. At least we have a plan in place. There's a company that has a tool that will convert all your code. It's slick. Now all we need is management to approve the year it will take to convert it and fix the broken stuff. Ever try to tell management that you're going to work for a year without giving them anything new? It's going to have to happen though -- we can't even pay for support in 2009.

2007: I learned how to make cool web pages without using tables. All you have to do is div div div div div div div div div div div div and give each one a CSS class. Then spend a whole bunch of time making it work in all the browsers. I can't count the number of times I was 1 pixel off in one of the three major browsers. But hey, it's the technology of the future. And once it works it's SLICK. Makes it all worthwhile.

2007: Does anyone give a crap about Vista? I don't... I just upgraded my Ubuntu to Gnarly Gorilla or whatever it is. Couple quick questions, a little download time, reboot...BANG! It's done. And the AMP in my LAMP all fired up flawlessly after the upgrade. Suck on that, MS.

So there you have it. My life as a developer over the last 25 years. I'm sure I missed a bunch of products I've used or didn't use that I wanted to. Some of it sucked, some of it ruled -- but that's how everything goes. You just hope that more things rule than suck. And since I'm still with that company that hired me way back in 1992 I can say that I've definitely worked on more things that ruled than sucked.

See y'all next year. :-)