Saturday, July 19, 2008


Seems the world doesn't need another blog, and yet here we are... The main purpose of this blog is to share my thoughts and experiences on game programming and optimization, along with my views on software development, problem solving and misc stuff. Hopefully you'll find something interesting here!

How it all began
I started programming at 11/12 years old, on a TRS-80 CoCo 3, of course, starting with Basic. After a couple of years, I found a book about the 6809 assembly, and wrote some small programs using "inline assembly" with Color Basic (aka POKE with DATA statements!). And of course, this was because I wanted to write my own games! About the same time, at our final year at elementary school, we got some Basic courses on a Commodore 64 with a hard disk! (This was a shock to me, as I only used the cassette to save my programs). Of course, I got my hands on a Commodore 64 assembly book, and tried to fiddle with the high-res graphics. Sad to report that I didn't get very far...

Several years later my family got a very expensive PC, a 386SX 2MB of RAM and a 62 MB hard disk (Megabytes, you did read correctly). The possibilities were endless! I started with QBasic, and then jumped to using the program for writing my assembly programs... That mode 13h with 320x200x256 was awesome! I was also into electronic circuits and logic, so I got one of those Radio Shack 130-in-one electronics kits... Needless to say I burned the LEDs pretty quickly :)

At this point I was hooked on Wolfenstein 3D, made my jaw drop with it's graphics and framerate. I never got into Doom that much, I liked the Wolfenstein "story" and setting better... My goal was now to make a 3D game...

Later on high school I had an introductory course on Pascal, and suddenly there was my language of choice! I could write inline assembly with it (Turbo Pascal 6.0) and also high-level code! Of course, the purpose of this was always to write games...

College started, and I took a major on Electronics Systems Engineering, pretty much Computer Engineering. I flew by all the CS courses, learned C++ & OOP and I was set... I also took a lot of advanced math and more CS classes, of which Compiler Construcion II was my favorite.

Somewhere through college id released the Wolfenstein source code, and I studied it obsessively. It was very weird to look at the guts of one of my favourite games. But I learned quite a few tricks from it!

After college, went to an internship on MS, helped on some Powerpoint features, and then tried to break into the games industry... Which took me two years! During that time I worked as a Java engineer and kept working on my own demos, went to the 2002 SIGGRAPH and took a shaders course and decided GPU programming was the area of games I would like to work on.

I got my big break into the games industry later that year, and been there ever since It's been a hard road, but very satisfying. I've learned a lot but there's still so much to learn!

What will I talk about
Hopefully not more about me :) I'll discuss real-world examples of performance, code organization, problems and some occasional rants.

What will I won't talk about
My employer(s), past & present, internal confidential information, NDA stuff, etc. Basically I'll only talk about publicly available stuff. I have bills to pay!

The Obligatory "Raymond" Clause/Disclaimer
These views and opinions are mine and only mine (the author), and do not necessarily reflect those of my current or past employer(s) official (or unofficial) position on anything. I'm here just to share what I can share and learn from others.

What blogs do I read
Of course, I'm trying to stand on the shoulders of giants, so here's the blogs I read on a regular (*cough* daily *cough*) basis (in no particular order):
Jeff Atwood's Coding Horror
Raymond Chen's The Old New Thing
Herb Sutter's Mill
Tom Forsyth's Tech Blog
Mark Russinovich's Blog
Joel Spolsky on Software
Steve Yegge's Blog Rants

Hope to see you around here!
- R

No comments: