This is me. Right now I serve as a part-time employee at a small consulting company, doing front-end and back-end web development for a variety of clients. I am the primary author of Get Programming with Go, which was published in 2018.
January 2014 marks the first Edmonton Go meetup, which I continue to organize today. I occasionally volunteer as a mentor with Canada Learning Code and I am responsible for maintaining several open source projects.
Outside of my career, the characteristics that define me are that of a Christ-follower, plant-eater, and pedestrian. Hobbies include photography, board games, cooking, and nature walks.
What follows is my personal account of becoming a programmer and what I’m excited for next.
I grew up on Lego, Dr. Seuss, and Berenstain Bears in an Alberta village. After my parents divorced, an Atari Computer found its way into our home. As far as I knew, its sole purpose was to play video games.
Then one day the school library held a book fair where I found a colourful book filled with short BASIC programs (likely published by Usborne).
When my Dad saw my interest, he gave me a coil-bound manual to really learn BASIC. I got to use his Kaypro IV on the weekends. It came with BASIC and several games, including text adventures like Colossal Cave and Hitchhiker’s Guide to the Galaxy.
My first computer was a Commodore 16 from a garage sale, tape drive and all! I wrote a historic text adventure where your character wandered Israel in search of Jesus. It wasn’t necessarily sophisticated or well-researched, but one of my first computer projects.
By junior high, our school upgraded the lab from Apple IIs to amber-screened XTs. Thankfully there was one computer with a colour screen, plus our neighbours let me use their PC after school. Progressing from GW-BASIC to QBasic, I wrote remakes of Star Traders and Atlantis.
In addition to lawn-mowing income, I earned money tutoring people with computers. When I had enough saved, I went to Programmers Guild to buy Turbo C 2.0. Unfortunately Turbo C wasn’t the most approachable:
- A simple syntax error would dump a dozen seemingly unrelated errors.
- I found the IDE confusing, the keys reminded me of WordStar!
QuickBASIC 4.5 turned out to be a much better investment.
While in Grade 9, my Mom helped me pay for a correspondence course from NRI (McGraw-Hill Education). The three-year course covered computer programming in five languages and came with a 386 SX.
Resolved in my future career path, I wrote a letter to Nintendo and received a genuine response encouraging me in my studies to become a programmer.
So, inspired by Galaga and other SHMUPs, my brother and I set out to make Firebirds. It had timing issues on faster computers and the “scrolling” and collision system were amateurish. While not exactly Raptor, it was a complete game, with title screens, difficulty levels, 2-players, sound effects, and both mouse and keyboard control. We distributed it through local Bulletin Board Systems (BBS).
My high school needed an application to do timed typing tests, so I wrote one. The first version of Trial Type was a DOS application written in QuickBasic. I registered Lynx Software as a sole proprietorship and licensed the software to a number of schools.
QuickBasic also allowed me to build a custom database for an alarm installation company. I was proud of the text-based UI, but unfortunately I knew nothing of B-trees. It got slow with more data.
Eventually I gave Turbo C another try, using DOS
edit and the command-line compiler instead of that wretched IDE. Borland C++ allowed me to make a Windows version of Trial Type and the far less successful Graphematics (think graphing calculator).
Apps were making me money, but I still really wanted to make games. By now I was using C and Assembler and experimenting with Mode X, VESA and EMS/XMS memory. 640K really wasn’t enough. I bought Watcom C/C++ so I could use DOS4GW. It was wondrous!
The Internet turned out to be quite useful. I was able to assemble a team of artists to work on a real-time strategy game entitled Galaxy. We got a prototype up and running, but it was difficult to maintain the initial momentum. The rise of DirectX brought the question of whether to continue or switch technologies. In the end, the prototype was as far as we got.
At that time the web was still relatively new. I remember reading the HTML 2.0 specification, one of the few resources available to learn it.
It wasn’t long before I wrote a command-line tool to make HTML easier to work with. HyperProcess was a preprocessor for HTML. It supported file includes and other features, while also serving to lint and compress my HTML. Think static-site generator sans-Markdown.
I stuck to ColdFusion for eight years across three jobs. Then Ruby on Rails came along, enticing me with its ORM and organized file layout. It didn’t hurt that I have a certain fondness for trains (my Dad worked for CN Rail when I was young). Ruby became my primary language for the next eight years across another three jobs.
When I began this career, I didn’t know the web would become this open platform for building apps, or that the SaaS model would become a predominate way to distribute software. I fell into web development, and I’m really glad I did!
Let’s talk about the next generation of developers, programming languages, and software.
As I reminisce of the people and authors who got me to where I am, I think about the next generation of web developers. While I’ve taken to writing what I learn and mentor occasionally, there is so much more to do.
Get Programming with Go is my first technical book, a beginner’s guide to the Go programming language, focused on the language itself. I’m not finished yet. Through writing, volunteering, and other efforts, I intend to empower the next generation of developers.