Reboot Refresh

Wow it’s been a long time… I’ve migrated everything off of Yahoo! Small Business to Network Solutions, and this blog was the final thing to migrate.  It is now on WordPress instead of MovableType, and has a new style.  And my “about me page” is 2 jobs out of date.  But at least a single tumbleweed blew through this lonely corner of the internet.

Reboot

Time to reboot this blog until I figure out what the heck I want to blog about. In the meantime, I’ve taken it all offline except for my 2 DirectX entries and my “about me” entry.

Random Discovery – A Brief History of DirectX

I found this surfing tonight. A good summary of DirectX history from Micro Mart in the UK. Cloned here just in case the link goes away – it’s a good version of the story. I figure since they borrowed parts of this pretty liberally from my Creative Commons governed DirectX Then and Now blog entry, Micro Mart wasn’t going to sue me for publishing a copy of the story with attribution . Hell, I’m flattered they wrote the story!

The Evolution Of DirectX

From the ashes of a failed standard grew the power behind virtually all modern PC games. DirectX has come a long way in the last decade, but how did it get from there to here?

It seemed like a good idea at the time. Release a Disney game in the run-up to Christmas, base it on the very latest Microsoft graphics engine and sit back while the money comes rolling in. A sure-fire recipe for success, right? Wrong. Back in 1994, Disney’s The Lion King CD-ROM ruined many a child’s festive season. So what went wrong? According to Alex St. John, a Microsoft games guru back then and now CEO of developer WildTangent, “The game relied on Microsoft’s new WinG graphics engine, and video card drivers had to be hand-tuned to work with it”. To make matters worse, Compaq had just released a Presario whose video drivers hadn’t been tested with WinG – loading The Lion King caused it to crash, so instead of the adventures of Simba and Nala, the kids were left staring at a Blue Screen of Death.

And hand-tuning your video card was not an easy task. A Wall Street Journal article on the debacle featured a software professional who spent most of Christmas day struggling to get the game up and running, while his poor girl sat crying because she couldn’t play it. Disney’s helplines were unable to deal with the flood of irate calls, and were quickly overwhelmed.

Something had to be done. A new standard was needed; a standard that did more than free Windows games from the restrictions imposed by the operating system. Something that gave programmers and developers a whole new set of tools to squeeze every ounce of performance from the host machine’s graphical capabilities. And above all, something that gave programmers and hardware manufacturers a set of standards to work to, so customers would never again be forced to waste good gaming time fiddling with a screen full of tedious settings.

Serious Fun

Three young Microsoft engineers thought they had the answer. Alex St John, Craig Eisler and Eric Engstrom reckoned what the forthcoming Windows 95 needed was a gaming software development kit. So powerful, they argued, the PC could eventually displace the consoles as the premier gaming platform. To this end, they put together a strategy document called ‘Taking Fun Seriously’, outlining their ideas for putting Windows PCs at the forefront of gaming technology. Unfortunately, the powers-that-be in Redmond didn’t take the document very seriously, and their proposal was rejected. Politely rejected, sure, but rejected nonetheless.

But the terrible trio – who came to be known as The Beastie Boys after the controversial late Eighties rappers – were not to be thwarted. They were on a mission, and they weren’t about to let trivial setbacks like instructions from their bosses get in their way. “The proposal was politely rejected, so naturally we did it anyway with resources we begged, borrowed, or stole from other groups”, said Alex St John. Named ‘The Manhattan Project’, after the 1940s atomic research program which developed the world’s first nuclear weapons, the team chose a radiation symbol as their project’s logo.

In December 1994, the team invited some of the PC gaming scene’s leading developers to a conference at Microsoft HQ. There they took a look at the emergent DirectX 1.0, offering ideas on what should be added, what improvements should be made and where the project was going. To promote the endeavour, each guest was given a glow-in-the-dark neon Manhattan Project t-shirt too. The developers went home happy and enthusiastic, and by now, even Microsoft was convinced…

Beta Time

Steady progress was made, and a beta was ready in time for the March 1995 Game Developer’s Conference, but the event’s organisers refused to allow Microsoft to use the event to announce the product. Instead, Alex St John hired out the Great America Theme Park over the road, and threw a launch party called Ground Zero, attended by more than 1,500 developers. You can bet the bar tab was enormous. The betas of the development CDs were barely ready in time too. “We finished the beta with literally minutes to spare”, explains Eisler. “I remember roaring down 405 at 120mph in Eric’s Mazda RX7 after being up all night, racing to make the Saturday morning Fed Ex pick-up so the CDs could be manufactured and shipped to us at the CGDC that Tuesday. The CDs arrived literally a couple of hours before we had to go on stage.”

The product was then called ‘Game SDK’, but when a journalist lampooned the fact that it consisted of DirectDraw, DirectSound, and DirectPlay, referring to the package as ‘Direct X’, a new name was born. ” We took it and ran with it”, said Craig Eisler. “Every set of functionality became DirectSomethingOrOther.”

DirectX 1.0 was eventually released on 30th September 1995, and consisted of DirectDraw for 2D graphics, DirectSound for a game’s sonics and DirectInput for joystick and game controller compatibility and control. The team hurried to complete the project on time. As Eisler put it, “From April to September 30th of 1995 is a giant blur, but we pulled it off. A bunch of games shipped for Christmas 1995, and I got an ulcer and gained 25 or 30 pounds as an added bonus”. After DirectX 1.0 had shipped, Eisler took a well earned three-week break, while St John and Engstrom went to Japan to launch DirectX 1J, which also proved a success.

The next two versions of DirectX were released less than a year after the first. With 2.0 imminent, Alex St John once again organised something special for the launch party, which took place at the Computer Games Developers Conference in April of 1996. The chosen theme was ‘Pax Romana’, and included a playboy model as Cleopatra and even live lions. DirectX coins were minted as souvenirs too. The project was going places, and DirectX 2.0 shipped on 5th June 1996.

Direct Thinking

And yet even as DirectX gained popularity, internal politics at Microsoft took their toll. The team wanted to port OpenGL from Windows NT to Windows 95 to enable consumer 3D graphics for consumers, but were unable to do so. Instead, for DirectX 3.0, they acquired UK-based RenderMorphics to create Direct3D, a set of graphics services used for creating and manipulating 3D environments and models. When the product was released on 15th September 1996, the DirectX radiation symbol logo had morphed into the familiar ‘X’ with a neon background. DirectX 3.0 also introduced special DirectInput files, a special Joystick Control Panel applet and an updated Virtual Math Coprocessor Device file to support Intel’s MMX technology. DirectSound was supplemented with the DirectSound3D API. Two minor tweaks followed, DirectX 3.0a and 3.0b, which fixed very minor bugs.

Naturally, there was another launch party for Version 3. Taking over part of Red West, Microsoft’s first off-campus building, the team threw a huge Halloween-themed bash.

DirectX 4.0 was planned for December 1996, and would allow access to some special features Cirrus Logic was going to put into laptop video chips. However, the chips were delayed, and with Version 4.0 put together in a rush (as usual), it was decided not to release it at all. Instead, the team got to work on DirectX 5.0, which shipped on 16th July 1997. This release added many improvements, such as support for force feedback controllers, multiple monitor support in Windows 98, a new Game Controllers control panel, better MMX support and an overall improved user interface. The software was incorporated into both Windows 98 and Windows 98 Second Edition. Windows 98 SE also incorporated DirectX 6.0, which was released on 7th August 1998 added new 3D features, bump mapping, texture compression and stencil buffers. There was also a performance increase over DirectX 5, and support for AMD’s 3DNow! technology. DirectX 6.1 was released in early February 1999, and added the DirectMusic API originally planned for DirectX 6.0.

Versions 7 and 8, released through 1999 and 2000, added improved 3D graphics and sound support. Performance was speeded up, and attention was paid to lighting and texture compression. By the Year 2000, however, all three founding members of the DirectX team had left Microsoft, yet their legacy remains strong. DirectX 8.1, released on 12th November 2001, also formed the basis for the Xbox console, an ambitious project which would soon put Microsoft at the forefront of videogaming technology.

DirectX 9.0, released on 24th December 2002, continued to improve the package, with support for much longer shader programs than was previously possible. A series of minor updates followed, until at last we reach the current version, DirectX 9.0c, which was released on 7th April 2006. The last three versions of DirectX 9.0c, released December 2005 and February and April 2006, are designed for the .NET 2.0 framework. Unlike previous releases, which were made up of different modules, these DirectX releases are a single file and therefore much easier to use.

Read the full article in issue 909 of Micro Mart. On sale 6th July

DirectX Then and Now (Part 2)

I meant to write this follow-on-on blog to DirectX Then and Now when I got my new PC, but then work and a giant abscess got the best of me, and so my new gaming PC (and Alienware ALX) has sat unused since it arrived on Monday. As luck would have it, Elder Scrolls IV: Oblivion came out this week too, and so with my abscess treated and work done, my cool new machine and my cool new game were ready for a workout last night.

It is amazing – I can turn the Oblivion settings for detail way up, and the game plays beautifully at 2560×1600. My new Alienware Aurora ALX PC kicks ass, and I love, love, LOVE my 30″ Dell monitor. Once you have one, you can’t go back. Ever since 1998, I would seek out the “high end” monitor, and it always cost about $2000. First it was a couple of iterations of the 21″ tube-based dinosaurs, then I moved on to a 21″ LCD, then the Samsung 24″ widescreen LCD (twice!) , and now the Dell 30″ widescreen LCD. In each case, about $2000 bought the state of the art (good god, I don’t want to add up how much I’ve spent on monitors in the past 8 years). I can’t wait to see what $2000 buys 8 years from now.

It is remarkable to me how rapidly technology has evolved since I last worked on DirectX. When DirectX 3 shipped in September of 1996 (I didn’t finish DirectX 5, I moved on to work on Internet Explorer half way through), the minimum requirements were a 486 66MHz with 8MB RAM, with a recommended Pentium 60MHz with 16MB of RAM, and a 2D/3D card. State of the art when DirectX 3 shipped was the ATI 3D Rage II, that promised 3D acceleration up to resolutions of 1280×1024, and came in 2, 4, and 8MB configurations.

My new Alienware PC seems to stack up OK against the DirectX 3 recommendations. Dual, count’em dual, ATI Radeon X1900 XTX video cards. Each with 512 MB of RAM -a long way from an 8MB max configuration. So check that box, “OK on video”. At the heart of my ALX is an AMD Athlon 64 FX-60 dual core processor that whups the ass of the Intel Pentium 4 EE 955 dual core processor. While GHz (forget the sad MHz of 1996) doesn’t matter any more as it is all about what can you get done in one clock cycle, not how many clock cycles are available, never-the-less, let’s note that the 2.6 GHz processor certainly meets the recommended Pentium 60MHz level for DirectX 3. And of course, dual core is pretty close to 2 processors in 1, so I’m thinking I’m well covered. And the 2GB of uber-fast RAM meets the 16MB minimum recommendation, as well. My Soundblaster X-Fi with 64MB RAM appears to meet the sound card requirement of “sound card from Creative Labs”. And while storage is not a DirectX 3 requirement, my ALX has two Western Digital Raptor 74GB SATA 10K RPM drives in a RAID 0 configuration with a 500GB storage drive to boot, so I’m ahead of the game.

I boldly inserted my DirectX 3 CD and ran the samples. My personal favorite is FoxBear (I spent far too many hours working on FoxBear in the day), and amazing – code from 1996 targeted at Windows 95 runs on Windows XP SP2. And good ol’ FoxBear runs great at 2560×1600, rate limited at 60 frames per second, the refresh rate of my monitor. Immortal Klowns (our tongue-in-cheek version of Mortal Kombat) worked great, as did RockEM3D, our rock-em, sock-em robots take off. Amazing.

Before these CDs suffered terrible bit-rot, I figured that since they were publicly available in their day, it should be OK for them to be publicly available today. So if you just can’t help yourself, I present for your (perverse) enjoyment:

DirectX 1 CGDC 1995 SDK Beta (6.4 MB)
DirectX 2 SDK (32.5 MB)
DirectX 3 SDK (78.3 MB)

And for the truly bored, the full specs of my Aurora ALX are in the extended section below… things have come a long, long way in the past 10 years.

Continue Reading

DirectX Then and Now (Part 1)

I finally ordered my new gaming PC on the weekend (more on that in Part 2), and looking at the specs got me thinking about the amazing way things have changed since I started work on Direct X over 11 years ago. In November of 1994, 2 friends of mine (Alex St. John & Eric Engstrom) & I had what we thought was a simple idea – what if it was possible to give game developers access to the high end features of video cards? Would games finally migrate from DOS to Windows (specifically, Windows 95 back then)? Could Windows really be a gaming platform that could compete with Sega and Nintendo? At the time, it wasn’t clear there was any way this could possibly happen. The efforts that I inherited when I went to work in the Windows 95 multimedia team were WinG, a port of bitmap APIs from Windows 95 back to Windows 3, and DCI, which gave access to the frame buffer of a video card but ignored all of the other cool features that were in video hardware.

The three of us figured we could do something about it, so that December Eric & I wrote a powerpoint and presented it to a bunch of game developers that Alex brought up. Thus was born a mad dash to build something to change the game so that high end games could run. We had to get to beta for the Computer Game Developers Conference (CGDC) in April of 1995, and I didn’t write the first code until Christmas break 1994 – talk about a mad dash! Since multimedia on Windows had a bad reputation back then, we were adamant not to have our stuff associated with “multimedia” and so we called the first beta the “Game SDK”. We got the idea to name it DirectX because some reporter made of fun of how we had DirectDraw, DirectSound, and DirectPlay – Direct “X” they wrote. We took it and ran with it, and so every set of functionality became DirectSomethingOrOther (Direct3D, DirectInput, DirectSound3D all followed).

The video card hardware folks LOVED the idea of something that took advantage of their hardware. ATI, Cirrus Logic, and S3 (there were others I’m sure but those are three I remember) all came up to the Microsoft porting lab in building 20 to get their hardware to work with DirectDraw (I lived in building 20 with those guys for almost 2 months). After a huge push we had a beta ready for April – it only worked on the ATI Mach 64 card (with what was then a huge amount of RAM – 4 megabytes) and a Soundblaster card. We finished the beta with literally minutes to spare – I remember roaring down 405 at 120mph in Eric’s Mazda RX7 after being up all night, racing to make the Saturday morning fed ex pickup so the CDs could be manufactured and shipped to us at the CGDC that Tuesday. The CDs literally arrived a couple of hours before we had to go on stage.

DSC_1236_new DSC_1238_new

DSC_3092_new

From April to September 30th of 1995 is a giant blur, but we pulled it off, and a bunch of games shipped for Christmas 1995 – and I got an ulcer and gained 25 or 30 pounds as an added bonus. We even pulled together a CD with bunch of games on it that went into retail stores. The games had “high end” requirements of a Windows 95 PC with a 486 66mhz processor, 8mb of RAM, and a 256 color display card.

DSC_1226_new

After we shipped DirectX 1, I took a vacation for about 3 weeks while Eric & Alex went to Japan to launch DirectX 1J. DSC_3081_newI heard stories of sushi on the face – they were quite popular in Japan, those two. While they were busy insulting a millenia old culture, I bought a Mazada RX7 and drove it home – having never driven a stick before. I used those weeks to teach myself to drive a standard transmission, and only had to have the clutch replaced after 4000 miles.

The next two versions were done less than a year later and were equally mad dashes – we shipped DirectX 2 on June 5, 1996 and Direct X 3 on September 15h 1996. Alex pulled off a way cool launch party for DirectX 2 at the Computer Games Developers Conference in April of 1996. ‘Pax Romana’ was the theme, with a playboy playmate playing Cleopatra, live lions and our own DirectX coins. The Hospitality Suite sign was from that show, and it stayed in my office at Microsoft for years (it now lives in my home office). While in my office at Microsoft, it had a clever edit from a co-worker that changed the “Hospita” to “Hosti”. With that simple edit, my office forever became known as the “Hostility Suite” – a badge I wore with pride for years!

DSC_1251_new DSC_1257_new

For the DirectX 3 launch that fall, we took over a part of “Red West” (the first off-campus building set Microsoft built) and did a huge Halloween launch party. There were Doom tournaments, a haunted house with some band where the lead singer dressed as a giant penis, and Alex, Eric & I dressed in demon outfits. All I remember of that skit was Alex and Eric doing a bit about arguing about whether horn width or length mattered and I came out wearing a giant set of horns ($500 buck custom job) and them shaking their heads and agreeing that horns didn’t matter. DirectX 3 was where we first launched Direct3D, based on the technology of Rendermorphics, a company we acquired earlier that year.

DSC_1246_new

After DirectX 3, we had planned a DirectX 4 for December 1996 that would allow access to some special features that Cirrus Logic was going to put into laptop video chips (I think, its been 9? years). When the chips got delayed, we opted not to ship DirectX 4 as it had us in a huge rush (3 months between 3 & 4) for no reason. We had also told the game developer community about Direct X 5 that was targeting summer of 1997, and so we decided to simply skip DirectX 4 rather than confuse people. DirectX 5 shipped on July 16, 1997 – and to this day, people ponder about what happened to DirectX 4. So much for avoiding confusion.

Around the end of DirectX 1 or the start of 2, we had a military coat made with the radiation logo and “Team Direct” put on it. We also had some patches made with code name of each project each time we shipped a version. You will never be able to pick out the theme…

DSC_1254_new

Now here we are in 2006, DirectX is is on version 9, and the PC hardware for games is not to be believed – but more on that later. On a final note, I have seen internet debates of the dates of shipment of the various versions, so I thought I would set the record straight: here is my first “Ship It” block from Microsoft, and it has the dates of each release.

ShipIt_new

Craig’s Background

Last updated September 25, 2012

I was born in Regina, Saskatchewan, Canada, but after 7 years of gradual relocation across the country, grew up in Thunder Bay, Ontario, Canada. I attended the University of Waterloo, and during my time as a co-op student worked for around 1 1/2 as a systems programmer hacking MVS for a large bank. I also did a year and a half long stint as a grad student in mathematical physics before deciding that it wasn’t for me and getting a job with a development tools company called Watcom.  I didn’t think I’d see another convocation at Waterloo, but I was summoned back in June of 2009 (20 years after the last time – wow time flies) to receive the J.W. Graham Medal in Computing and Innovation – go figure.

I was at Watcom for about 3 years (from 1990 to 1993) where I worked on debuggers, compilers and even a 32-bit Windows Extender (which people cared about in 1991 and is as irrelevant to technology today as Loverboy is to music). Watcom was eventually acquired by Sybase, and all the old Watcom tools code is now available under open source from OpenWatcom.org.

While at Watcom, I became friends with a Technical Evangelist named Eric Engstrom who talked me me into interviewing at Microsoft, and before I knew it, I ended up moving to Redmond, WA in June of 1993, where I worked for the Windows Marketing group as a Technical Evangelist. A little less than a year later I moved to the Windows 95 team to work on Multimedia. After working on some projects related to games & high performance multimedia, a couple of friends (Alex St. John and Eric) & I got frustrated with what was being done and started work on something that was briefly know as the Game SDK for Windows 95, but we called it DirectX by the time we shipped the first version. I was the development manager of Direct X from the inception until half way through version 5. Eric & I filed for a few patents related to DirectX along the way. I blogged about my DirectX memories here.

The internet push for Microsoft got into full gear by late 96/early 97, and I went to focus on Internet Multimedia, where we worked on inserting a lot of cool high-end 3D into Internet Explorer. After Internet Multimedia, I was the general manager of the Windows Media Platform Group from April of 1998 (it was called Netshow when I first took the job) until I left Microsoft in January of 2000.

I was the CEO of a Redmond based wireless software company, Action Engine, from January of 2000 until March of 2004. It was a great experience – raised around $35. 5 million over the 4+ years, built a ground-breaking client-server platform that was deployed by wireless operators around the globe, and drove significant revenue growth along the way. I was even a Seattle 40 under 40 winner; of course, that was back in the good old days when I was actually under 40.

Right before I left Action Engine in early 2004, I did an interview with UW TV that goes through most of the above.

In June of 2004, I moved back east to Virginia and joined America Online (a subsidiary of Time Warner, where I kicked off the company’s standardized cloud platform efforts before focusing on wireless once again – from early 2005 until I left AOL, I was the general manager of the AOL Wireless group. On August 8th, 2005, AOL announced the acquisition of Wildseed and the formation of AOL Wireless. There was a quite a bit of press coverage, here is a sample: Reuters USA Today The Register Seattle PI Seattle Times.

We did a lot of really fun stuff in AOL Wireless, like launching new WAP services, launching XT9, expanding the reach of mobile AIM, making it easy to migrate from the desktop to mobile, and my favorite thing, the launch at CES 2007 of our Smartscreens portable media hardware & software reference design with Haier America (more detail was provided in Haier’s CTIA announcement).

I left AOL in February 2007 to rejoin Microsoft – for me, it looks like all roads lead to the world’s largest software maker (even if it means moving across the country and back again). After spending a couple of months investigating different options inside the Entertainment & Devices Division, I became the General Manager of the Macintosh Business Unit, where I got to have a blast working with a great team shipping Office 2008 for Mac and helping to set the course for the next version of Office for Mac.

In March of 2009, I became responsible for Microsoft’s Entertainment Client Software group. We shipped Media Center for Windows 7, brought the Zune Service to Xbox (now Xbox Video and Xbox Music) and the PC, and shipped the Windows Phone PC companion app – and along the journey, improved our content pipeline and brought our entertainment service to multiple new countries.

A reorg struck in early 2011 that gave me what I consider the coolest opportunity in my career – I was given the charter to build a team from scratch and bring Kinect to the Windows ecosystem. It’s been a hell of a ride these past 18 months – the team has scaled up, we’ve shipped 3 major versions of our software stack and brought the hardware into 38 countries. And this is only the beginning. I believe in a future where computing moves into the background and where computers learn us, we don’t learn them. Like Star Trek, only better. Check out our blog!