My life at DRW: How programming video games brought me to DRW
I was lucky enough to get a computer on my 8th birthday back in the mid-80s. At that time home computing was just starting to take off and anything fun required a lot of typing in, or loading from cassette tape.
Just like with kids today, the main thing my computer was used for was playing video games. Natural curiosity, fueled by wanting more games than my allowance could afford, led to me to learn how to make my own.
Fast forward a few years… I found myself with a job at a major games company, working on PlayStation, Xbox and PC games.
With games, it’s really important to make them as visually impressive as possible - as well as fun to play, of course. To get the most out of fairly limited hardware, it was necessary to use a variety of low-level tricks: writing large chunks of code in assembly, using bit-twiddling tricks, understanding how the memory layout and caching affects performance and taking advantage of novel hardware features.
For example, when doing 3D projections it’s necessary to do a divide:
The Dreamcast’s custom processor had a “reciprocal square root approximation” instruction which gave an approximate answer to quickly.
It turned out that it was faster to do the perspective divide as
It was not as accurate, but was around 10 cycles faster: perfect for things like particle systems.
As well as having a really good low-level understanding of how the hardware worked, it was critical to remember that picking the right algorithm is equally important. In one case changing a sorting algorithm from the usual best choice of quicksort to a simpler shuttle sort made a big difference: we were sorting objects by their distance from the player each frame. From one frame to the next, often no relative orderings have changed - the list was already sorted - which is quicksort’s worst case. Shuttle sort is usually a poor choice, but if only a few objects’ positions have changed relative to each other, it can be exactly what you need.
My career took me in a few other directions after that, most notably working for Google on YouTube mobile, until I got a call from a friend saying I should check out this cool trading company. “It’s not what you expect,” he said. “Cool” and “trading company” were not words I had seen put together, but my friend was persuasive and, after spending a bit of time in the office, I accepted that he was right. DRW is a cool trading company, and definitely wasn’t what I expected.
So, why were they interested in talking to me?
It turns out that the skills honed getting the most out of the Dreamcast are very useful in other applications, like the financial markets. The algorithms that make it feasible to process large 3D worlds on a home console are just as applicable to large multi-dimensional financial data. Being familiar with direct access to hardware is a boon when you’re dealing with exotic network adapters.
I took the plunge, leaving my Google job and my homeland behind, bringing my young family to Chicago. It was one of the best decisions I’ve ever made.
And here I am, after over five years at DRW, still working on really cool and interesting problems on the cutting edge of hardware and software. And still chuckling that I get to use the low-level tricks I picked up as a kid making games.
I’ll often share the tricks I’ve learned from the video game industry at our DRW Geek Lunches. You can catch one below: