My Career – Part 7: Microsoft – The Early Years (1996 – 2001)

Working at Microsoft was a different experience. I quickly learned that while everybody was smart and didn’t suffer fools with any amount of patience, my fellow developers were very cool and very fun to work with. Some were a bit eccentric, which everybody embraced. Everybody was very intense, but it was an extremely fair environment. It took a long time for me to overcome my imposter’s syndrome, but I eventually learned to thrive.

Most of the longtime employees were very rich (due to the stock doubling every few years), but nobody was classist – it was kind of fun seeing how people spent their money (many bought planes, a few of which I got to ride in).

My early days at Microsoft are honestly kind of a blur. I was working all of the time – I’d work at least 6 days a week. Sometimes they would even schedule in-person meetings on the weekend. We were all given generous amounts of vacation time, but actually using it was unofficially frowned upon (it came across as not being dedicated to your job). I didn’t take much paternity leave when my children were born – for my first two children, I don’t think that I took more than a week and a half off work. Things were getting slightly better by the time my third child was born in 2003. Looking back, I don’t feel great about all of the tradeoffs that I made during my career.

The DirectX team had its own culture, which at first was very different from Microsoft. We worked on games, while everybody else did stuff that was much less cool (so we had to act cool). For some insight on how this looked, a book was written on the early days of the DirectX team call Renegades of the Empire.

Much of the “cool” stuff in this book aged like milk

We also differentiated ourselves by picking sinister, non-corporate internal code names. DirectX 1 was called “The Manhattan Project”. I lost a lot of my cool swag from those days, but I found a picture of the early project patches on Craig Eisler’s blog

The mushroom cloud was a bit much for corporate (although it looked awesome on the T-Shirt!), so they had to tone it down (picking names with sinister undertones, but only if you were looking for them). Raymond Chen (an amazing guy who I loved working with) writes about this on his blog.

We were disappointed with the code name “Diesel”, which was meant to reference the Oklahoma City bombing, but many felt that the reference was too obscure. A contractor who lived in Idaho provided some of us with a package called “Greetings from Project Diesel”, which included a package of ammonium nitrate and instructions on how to mix it with diesel to form an explosive. It hung on my wall for years, but now I can’t find it.

DirectDraw was owned by two primary developers – myself and Jeff Noyle. Others came and went over the years, but we were primarily it for DirectX 3 through DirectX7. DirectDraw went away in DirectX 8, as 2D and 3D functionality were all incorporated into a single component.

Developing was easy, but debugging was hard. Besides the normal everyday bugs, two types of issues were difficult – stress failures and app compat.

Every night we ran stress tests on our test machines. Stress testing ran a bunch of tests over and over again in parallel in a way that was meant to overwhelm the system and then see if this causes something to break. The morning was always spent debugging stress failures, which were often caused by a rare combination of improbable scenarios aligning in a way that caused issues. We’d connect to the machine using WindDbg and would see something like this:

WindDbg at the time didn’t support source level debugging, so we all got really good at understanding assembly code.

The other type of issues difficult to debug were compatibility issues with existing apps using an API that we changed (referred to as “app compat” issues). Of course, we never had source code for the 100s of games built on top of DirectX, so most of this debugging was done using assembly code. Some issues were easy to figure out, while others could take days. Often when realizing that an application relied on a specific, undocumented behaviors that we needed to change, we’d create new “app compat shims” to indicate that a specific behavior should be used for a specific version of the application.

Maintaining backward compatibility is hard, but it gets harder when your platform is successful (used by thousands of applications and by millions of people). DirectX had its own game library with contractors who would play games all of the time looking for such issues.

I was the video expert in the graphics team. We had a separate video team, but by this time all graphics chips were incorporating video acceleration features, and these features had to be exposed through DirectX for the video team to use them. Hence, I was very involved with the video team and was extremely involved with the various video innovations done by the graphics vendors (which by this time were consolidating from ~15 to eventually 3).

We held DirectX meltdown events, where game developers and graphics vendors would attend and then complain about each other. I made several presentations to some fairly large crowds, and I once answered questions at a WinHEC event with over 1000 people.

I do have one small claim-to-fame which is legit, but also irrelevant. The DirectX team wanted to compete in the console space, so they came up with the idea of the XBOX (The X was due to it using DirectX technology). Otto Berkes was the lead over the DirectX team, Sheamus Blackley was the PM/evangelist, and Colin McCartney was the engineer doing the actual work. Internally, the XBOX idea was extremely political as multiple teams had differing ideas, so the team decided to created a demo to pitch the idea to Bill Gates. As they wanted the XBOX to play DVDs as well as video games, they asked me to write a simple DVD player for the XBOX hardware to be used as part of the demo. It only worked on it for two weeks, Bill Gates wasn’t interested in seeing the DVD player demo, and I made no other contribution to the project, but I can still claim that I’m the second engineer to actually work on XBOX (I asked Colin McCartney last night if he felt that was an accurate statement, and he agreed that it was).

The Bill Gates meeting is a well-known bit of history, because two different groups brought an idea for a gaming console, but one brought a PowerPoint deck and the other brought a functioning demo (hint: the demo normally wins). Once approved, the XBOX project was moved to a different team and I was given the choice to move with it, but I declined in favor of staying on the DirectX team.

Leave A Comment

Your email address will not be published. Required fields are marked *