About me

Ever since I was a child, I have been fascinated by video games. There was always something magical about being able to interact in real-time with the graphics on the screen, and trying to solve whatever challenge the game had in store. My first gaming console was a Philips Videopac G7000, which was also marketed under the name of Magnavox Odyssey2 in some countries.

The Philips Videopac G7000
The Philips Videopac G7000
Image by Staffan Vilcans
(Flickr.com, licensed under CC BY-SA 2.0)

Sold from 1978 to 1984, this machine featured state-of-the-art gaming hardware with an Intel 8048 CPU and a total of 192 bytes of RAM. It was able to display stunning graphics in 16 colors and a resolution of 160×200 pixels.

For my 10th birthday I got a Commodore 64, which was a considerable upgrade from the G7000. Available from 1982 to 1994, the C64 is one of the best selling single computer models of all time, so it should be quite familiar to everyone who is into retro gaming.

But it wasn’t until 1993, when I got my first IBM-compatible PC, that I really started to take an interest in programming. Sure, I had played around a bit with BASIC on the C64, but because of its very limited capabilities, I never found it that interesting. To create anything half decent on a C64 would require assembly programming, and i had neither the documentation nor the software required for that.

This was of course before the Internet made its way into everyone’s home, so the access to documentation and software was limited to what I could find in magazines or at the library. None of my friends were into programming (very few of them had access to a computer at all), so it was a very challenging and quite lonely hobby to have. However there was a couple of development tools shipped with the operating system (MS-DOS). There was debug.exe for assembly language, and there was QBasic. Learning assembly language with little to no documentation was pretty much an impossible mission, so for the first few years I stuck with QBasic. It was by no means a very efficient or powerful development tool, but it did included quite extensive documentation, so it was pretty easy to learn, and soon I found myself writing a variety of graphical effects as well as the occasional game. It was mostly pretty simple stuff (at the age of 14 my knowledge of e.g. mathematics was quite limited), but it was enough to establish a lifelong passion for software development.

As a side note, I can’t seem to find much information on the web about my first PC. It was one of the later models from Commodore, and the casing looked exactly like this one. However it had a 486 SX-25 CPU, 4 MBs of RAM and a hard drive of 120 MBs. If anyone knows where to find more details on this computer, please let me know!

In 1995 I moved to a larger town where I started high school. I met some new friends who were also into computer technology beyond just playing games, which was quite a new and refreshing experience to me. One of them would hand me a copy of Borland Turbo C, a C compiler and IDE for MS-DOS. There was still the problem of documentation, and the public library didn’t have much to offer. There was, however, an engineering college in town, where I somehow managed to convince the librarian to let me borrow books even though I wasn’t yet a student there. I remember reading the second edition of “C – how to program” by Deitel & Deitel from beginning to end, and spending most of my spare time exploring the different possibilities of the C language.

In 1997 I got access to the Internet. This would be another complete game changer, as a whole new world of software and information would be available to me. I first moved on to Turbo C++, which was my first venture into object-oriented programming, and later to the Windows-based Borland C++.

After a year in the military, I became a student at the local engineering college in 1999. And the rest is history, as they say. Many years have passed since then. I went on to get a master’s degree in software engineering, and have worked in the software industry ever since – albeit not as a game developer.

Despite my passion for both video games and software development, I decided at an early point that the game industry was not for me. In my country there was very few companies that were serious about game development, so I would probably have to move abroad. The industry was also said to be plagued by an unhealthy culture with expectations of endless overtime work during crunch periods, and unless you were among the very best in your trade, you could only expect a relatively modest salary. In retrospect I don’t really know how true this is, but it seemed too much of a risk at the time.

Game development would nonetheless remain a hobby that would stay with me, on and off, for many years to come. I never really managed to finish anything good enough to release, as I was more interested in learning specific techniques and effects. The “boring” stuff like creating menu systems, balancing game mechanics and putting the cool stuff together into a complete package would be postponed indefinitely, so I ended up with heaps of small “proof of concept” applications that I would abandon once I had managed to implement that cool effect or technique. I also wasn’t serious enough about generalizing and packaging my code so as to be reusable, which resulted in me having to reinvent the wheel again and again.

I guess you could say that this blog is my attempt to get better at completing projects and designing code for reusability. By documenting the process along the way, I force myself to be as clear and concise as I can, to build my projects in a more structured way, and to think carefully about the reasoning behind the choices I maka. I can only hope that it will prove useful for someone out there.

Happy coding!