I started programming computers in the summer of 1983, so I’m closing in on 28 years of programming. It has been an interesting journey so far – programming for fun, then for school, then for work – and now back to fun again…
It all started with…
1983: Ti-99/4a BASIC. The first computer I ever touched was a Texas Instruments Ti-99/4a that belonged to a family that lived just down our street. I babysat for them, and after their kids were asleep I got many hours of programming. There was no external storage, so once the computer was turned off the program was gone!
1983: Commodore BASIC. The Commodore VIC-20 was the first computer my parents bought for me. I made games that my friends and I would play, distributed on magnetic cassette tapes. Too bad I didn’t have any business savvy back then, because many of my games were as good as what was on the market at the time.
1984: Commodore BASIC. This time I was programming on the Commodore PET. My grade 9 teacher told the other students to type in the programs that I wrote on the chalkboard. I also made large text adventure games that rivalled Scott Adams. My first exposure to a database was to dBase-II. I didn’t really understand the value of a database back then.
1985: Pascal. School computer labs were starting to be used, but only for computer class at this point. They were all full of Apple IIe computers. My computer teacher tried to warn us that GOTO was evil and to be avoided at all cost, and hence introduced us to Pascal. I carried a case of 5.25″ floppy disks around almost all the time.
1987: Assembly. I now owned an Apple IIc computer, and some of the graphics and sound routines for the games I was making needed to be programmed in assembly for speed.
1988: FORTRAN. One of my undergrad computer science classes introduced us to FORTRAN. The language seemed stuffy and rigid to me.
1989: C. 1989 was a glorious year, not only because university was one big party, but also because I loved the C programming language. Most of my computer classes were switching over to C, and assignments were easy to code and mostly fun.
1993: Pascal. I thought I was done with Pascal from high school, but it reared its head again in university.
1994: Prolog. At the time that Prolog was being taught to me, I was wondering what was stranger: this idiotic language, or the fact that it was being taught for credit. I knew there was no way I was ever going to use this language once I found a job.
1994: C++. Is there anyone who learned that didn’t learn C++ inheritance by example of circle class being derived from point class? 🙂 C++ promised a whole new world of Object-Oriented Programming bliss, but I think I just ended up with hundreds more lines of code.
1995: Java. I decided to teach myself Java, because although none of the classes at university had adopted it yet I thought it would be an important language in the future.
1996: Visual Basic (VBA). Not purely Visual Basic, but VBA – Visual Basic for Applications. Namely, Microsoft Excel. At first I deplored this language because it seemed to go back on years of learning “the right way of doing things”. Later I learned to do some very powerful things in Excel that I probably never could have done outside of it. So I appreciated it for what it was, and for years after that I had side jobs programming Excel macros for small businesses.
1998: Tango. This is the first year I started working as a university employee, and so started getting paid to program. Tango was an integrated development environment that was years ahead of its time and way ahead of its competition. Unfortunately, the technology was purchased by a company that killed it.
1998: PHP. PHP 3.0 was a thing of beauty, considering the alternatives that existed at the time. I installed it on a server at home, and was compiling in copious quantities of optional modules like crazy. Generating dynamic images and charts on the fly seemed magical back then.
1999: SQL. I started using SQL against MySQL as part of the LAMP stack. I also dove deeper into C programming and Linux system programming.
1999: MIPS Assembly. I was a sessional lecturer for three years, teaching second year university students how to program in the MIPS assembly language.
2000: Perl. My introduction to Perl was on RedHat Linux. I fell in love with this language right away! Regular expressions are still a thing of programming beauty.
2001: Java. I went back to Java and started programming games that could be run as applets on web sites. This was very fun. I recently checked, and some of those games still work today, although they aren’t online any more.
2003: C and VAX Batch Files. I quit my job as a lower-level IT Manager, and moved to a new position in central IT at the University. I was then introduced to the inner workings of a home-built Student Information System. It was a pretty solid system, but some of the tools used were showing their age.
2004: PL/SQL. I was introduced to functions, procedures, packages and triggers on Oracle 8. This was a whole new world of database power not available in plain old SQL.
2005: Pro-C against Oracle 9i. Yes, this was a throw-back. I was making patches to code that was originally created by the software vendor in 1983 and survived through many upgrades.
2005: Actionscript / Flash. I took the plunge and invested some time taking three classes on Macromedia Flash. Although Actionscript itself was easy to learn, the whole concept of Flash was quite foreign compared to what I was used to. It still seems like a very different programming world.
2006: Cold Fusion. I think this is the first programming language that made me throw up a little every time I had to use it. After a while I stopped trying, and anything given to me in Cold Fusion got re-written into some other language before I was done with it.
2009: Objective-C. Or at least I tried to get into it. The syntax of this language leaves something to be desired for me, so although I understand it, I can’t claim to be proficient at all. I tried to learn Objective-C in order to develop iPhone applications, but then discovered Titanium.
2010: Scratch. One of my co-workers who also has young children told me about Scratch, so I downloaded it and started playing with it with my two daughters. It’s quite fun! It reminds me of Flash, but with a paradigm that’s much easier to understand (for young and old alike).
2011: Ruby. In the true spirit of cross-platform development, not only am I now developing for multiple mobile platforms, but I’m using multiple cross-platform tools (Rhomobile Rhodes being the latest addition). Masochistic? Most likely.
My stint with Ruby was very brief. By now I think I have forgotten everything I learned about it.
2016: Python. Just when I thought I knew all of the scripting languages I wanted to know, I was forced to learn Python. I’m glad about that, because not only is it still cool to use Python, it’s substantially more enjoyable than Perl. I forget why I was fighting using Python for so long.