My Programming History
In today’s blog post I’m going to explore my history with computers and programming, how I first got into computers and what lead me to becoming a programmer with highlights and memories that have had a profound impact on my life. This serves as a reminder for myself to walk down memory lane as well as give insight into one possible path.
Me playing video games around 1990 on our 286
The beginning (~1988)
The first time I used a computer (and played a game) was when my dad brought home a laptop from his work for the weekend when I was about 6 years old. I was allowed to play Dig Dug for as long as the computer lasted before it broke (usually less than an hour) and I was instantly hooked. The monochrome liquid crystal display opened me up to a world of possibilities and I never looked back.
Similar model to the first computer I ever tried
I was a regular kid with plenty of friends and I spent most of my days running around playing imaginary cops and robbers, board games and biking around. While I enjoyed all these activities immensely, there was something about the computer that captivated my attention like nothing I had seen before.
Closely after this experience my neighbours purchased a Commodore 64 and I first experienced real (color) graphics and a device built specifically for games. I would spend hours playing the handful of games they owned and was especially interested in how a game went from a cassette tape into an interactive experience. All other casette’s I had experienced were purely one directional with the movie or music being played from the tape while the user passively consumed it. It wasn’t until years later I learned the secrets of this magic and at this young age was simply happy to engage with the game and try and beat my friends at whatever game was on offer at the time.
The Home PC (1991)
Around the time my family moved from Sydney to a small country town my father purchased a 286 for use at home. As I had just moved, I had a small group of friends, none of which were interested in computers and therefore my access to games and other programs was extremely limited. A family friend gave me my first game Crossword Creator and I spent many hours building crosswords for my parents and grandparents to solve. I quickly learned that this wasn’t something “cool” kids did and so I kept this hobby secret from my friends at school and would not make games for them for another 7 years.
The gw-basic book I taught myself to code with
It was during one fateful day while home alone snooping around my dad’s computer desk that I found his gw-basic programming book and I had the biggest epiphany since first using a computer. In the same way that computers turned passive consumption of TV and music into interactive experiences, I could stop consuming games and build them myself. I immediately began creating small games and applications and self-taught myself the basics of programming. At this stage I had the most rudimentary knowledge and spent most of my time finding spelling mistakes and regretting not leaving enough numbers between lines of my programs.
As the years went by however, the 286 became increasingly underpowered for what I wanted. Friends in my neighbourhood started getting 386 and 486’s and I was left behind. It was at this time that my full addiction with gaming began as I was exposed to a widening array of games that my friends were acquiring via the pirate network in our neighbourhood. The third profound event in my computing history was the first time I laid eyes on Dune 2 and my passion for strategy games was born. I had played dozens of other games up to this point from Sonic to Myst but I had never been captivated as I was when I learned youl could control not just one character but a whole army of units. It became imperative now that I have a computer with these games in my own home.
Despite hours of pleading to my parents, they argued that a new computer (and therefore more gaming time) was not what I needed at that stage in my life. They were concerned that my grades would suffer and that our 286 (now 5+ years old) would suffice. I even reverted to logical arguments that it was for compilation times not games that I needed a faster computer, however my dad countered with the fact he would leave a compiler overnight to compile programs back in his day and so waiting a few extra seconds would teach me some patience.
My first computer (and business)
By the age of 13 I realised that my life was over if I didn’t get a new computer in my house and my parents had made it clear that they weren’t going to purchase one for me. With only a handful of dollars to my name and being too young to get a job I did the only thing I could think of and started my own business. A friend and I pooled our money and started (legally) selling video games to other kids at school sourced from a local distributor. We then made enough money to buy some new, unsold CDs and started getting up at 5am every Sunday to go to the markets and sell the CDs for a few dollars profit. This was a gruelling exercise often making only a few dollars and having to spend it on sugary foods to help cure the depression from wasting our Sunday mornings.
Not my PC but similar biege box
But in time, we improved our sales pitches and slowly started to move product. Months went by and one day we checked our bank account to realize we had made a substantial amount of money. I suddenly realised I had enough to purchase the Pentium 100 I had been coveting at the local computer store for the past few months. I immediately shut down the business, withdrew all the money and purchased my very first computer. With a computer running at an incredible 100Mhz, what need was there for running a company and having income, there were games to be played and made.
Having a computer in my room was my life dream and I took advantage of it at every waking moment. I was in a constant battle with my parents over having as much computer time as I could. Most of my time was spent playing games, but as time went on I became bored with everything I was playing and started making my own games.
Visual Basic
I was fortunate enough to receive a scholarship to a local private school that had an incredible computer program and I was exposed to my first external education on programming. The school owned licenses of Visual Basic and I quickly went to work learning everything I could about making little applications and games. I would spend much of my time at home and in computer class making small games for my classmates to play as I quickly got bored with the class material we were taught in computer class.
My second language after gw-basic
My games were as violent and bloody as my limited paint skills could make them and I soon teamed up with my schoolmates to build bigger and better games together. Our pride and joy “Ensanguined Fury” was a beat ‘em up in the style of our favorite game, Mortal Kombat, with far more blood and inventive fatalities. We believe that a conspiracy by the conservative school was formed against us as one fateful day all of our saved files for the game (and the backups) were mysteriously lost and I learned the valuable lesson of keeping secure backups that I have not forgotten to this day.
College
After graduating from highschool I was hungry for someone that could teach me real programming as my highschool teachers had all refused to teach us a real programming language like C. However, college changed all that. I started studying a Bachelor of Information Technology and took every programming elective I could find. I learnt Java, C and C++ in the same semester and fell down the rabbit hole of programming even further.
My first functional programming language
A semester later I learned Haskell and am thankful for the words of advice a friend gave me when moving to my first functional language. Upon hearing I was taking the course he pulled me aside and said “Haskell will make no sense to you and you’ll want to give up. It will feel like you’re riding up an incredibly steep hill with no end in sight. Then suddenly, you’ll reach the summit, have a flash of understanding and it’s all smooth sailing from there. Just make sure you push through that initial pain and you’ll see that it makes sense and you’ll love it”. I couldn’t summarise my journey any more accurately and while I only dabble in functional languages from time to time now they forever hold a dear place in my heart.
It’s worth pointing out at this stage that I still wasn’t a good programmer, despite having done it on and off for 7 years. While I enjoyed programming and found it quite easy, I hadn’t yet fallen in love with it, this came during my first work placement in my second year of College.
Internship
My college offered “Cooperative Education” allowing students to work full-time during their studies while doing a half-load of subjects and receiving full credit. I was fortunate to be accepted into a consulting firm near where I was living and began full-time employment as a programmer in 2001. As the consulting firm also owned an education arm, the other 3 interns and myself were all given free Microsoft Certified Professional (MCP) training to get us up to speed. It was during this time that I met my instructor Duggie who radically transformed my life as a programmer. During this MCP course I finally fell in love with programming and after multiple years finally understood the power at my fingertips. It was during this time I realized that programming is what I’d do for the rest of my life and I consumed every piece of information I could about every type of programming available.
Certification in Visual Basic
I had a successful year with the company and left to complete my course before being head hunted by one of the clients of the consulting firm I had been working for (just outside the non-compete period). I worked as the lone programmer building reports for one of the branch managers sitting among the accounts payable and receivable departments. This was an eye opening experience as I learnt to work with non-programmers and people that absolutely hated their jobs. It was during this time that I realized how fortunate I was to have found something I was so passionate about and that paid me enough to continue buying a new computer every couple of years (and do other minor things like putting a roof over my head and feeding me).
While this work was enjoyable I was becoming bored with business programming and felt the pull towards creating games instead of just playing them in my spare time. I began teaching myself graphics programming and soon landed my first job in the games industry.
Dream Job
While growing up I had played every strategy game that was released. When I was 15, I heard that a strategy game was being developed not just in Australia but only a few hours from where I lived. I read every magazine article I could find on the game and was overjoyed when it came out and was a huge success, making the most money any Austrlian game had ever made. I filed this away as a place I wanted to work when I grew up.
Australia’s greatest strategy game
The game was Dark Reign and the company was Auran. This was the logical place for me to apply once I had taught myself graphics and game programming. As I was still learning game development I decided to take a job at a smaller studio to make sure I was fully skilled up before applying at my dream job. After a horrendous 3 day straight crunch, I was flown over to E3 to show off the game we had been working on. During that trip I met the creators of Dark Reign (and heads of the studio) who offered me a job on the spot.
I worked at Auran for a number of years working on their engine tech, virtual home building software and Battlestar Galactica for Xbox 360. However, after a gruelling crunch on BSG and being burnt by publishers I decided that it was time to take control of my own destiny.
Consulting
I quit my job and started a consulting company with a friend, just in time to beat the crash of the Australian game industry that saw all but a couple of studios closing leaving most people without work unless they moved overseas. Just two weeks after I resigned all of my coworkers at Auran were let go just before Christmas.
My one true love in programming languages
We had great success with the consulting company as we landed work with hospitals and banking customers that let me cut my teeth on security and privacy requirements that I had not seen to date. It was at this time that I first started using .NET for the majority of my work. Up to this point I had been almost exclusively working with C++ for the games we built and Visual Basic for the business applications previously. I now created mostly web applications and some desktop apps for a variety of clients.
C# was the perfect language for me. It took my preferred syntax of C++ and combined it with the ease of use and tooling of a Visual Basic like language (without all the limitations). The advent of Unity at this time also helped as I was able to create business applications by day and games at night in the same language.
As time went on I again felt the pull of the games industry, however this time I wanted to do it on my own terms rather than going back to one of the handful of remaining game studios.
Indie Games
I left the consulting company and formed a game company where we built a handful of indie games that all had moderate success. I continued to consult on the side to pay the bills to facilitate raising a family without being reliant on the hit driven game industry.
Our most successful game
I moved into project managing as well as programming the games and grew the team size with each subsequent game. I found that running the business, project and software gave me full control and no-one to blame except myself when things went wrong. This Extreme Ownership approach is how I like to live my life now and is the way I think we can best excel at achieving our full potential both as programmers, in business and life.
While working on our latest game, my business partner (Dylan) and I realized that we needed to maximize our games exposure from the very beginning and content creators (streamers and youtubers) were the way to do this. We began investigating how we could share the revenue of our games with the creators and ran into huge stumbling blocks at every turn, from regulations to currency conversions and fees. Enter, blockchain.
Blockchain
While working on indie games a friend introduced me to Bitcoin and I fell in love with the concept. I took a brown paper bag to a bank, deposited it into bank account and waited 3 days. Miraculously my wallet had some funds in it.
Around this time we were exploring ways of paying out content creators to help market our games. Dylan came up with the idea of us shelving the game and working on a blockchain solution not just for our game but for everyone’s game. Out of this Refereum was born and I have been working on it ever since this original idea. We’ve made great progress allowing people to buy games on the Blockchain as well as rewarding content creators and viewers alike for engaging in games.
Refereum - blockchain for games
I had a number of less-technical friends that were investing in ICOs and needed my help vetting projects. For this reason I started learning Solidity (the programming language of Ethereum) so I could audit the smart contracts used for ICOs and generally play around with Blockchain technology. I was fascinated by smart contracts and their power to transform the way we do business. I was also fearful of the cost involved in any mistakes made in coding the contracts. It was one thing for a game to glitch or website to take a little longer to load but with smart contracts there could be millions of dollars at stake.
The Future
I’ve started teaching my son basic programming and I continue to design and slowly prototype games in my spare time and will one day look to release a new game. I continue to dabble in new languages as they come out, however I am still madly in love with C# and its continuing evolutions.
I look forward to one day retiring and building my own perfect language (spoiler: C# but with optional memory management and compiled to native code) and continuing to build games until I can’t anymore.