Managed World

Techno-babble from yet another babbler RSS 2.0
# Friday, May 13, 2005
 Hello. My name is Jason Olson, and I'm...... a Slacker. I'm freely admitting it here in front of the world. I start things that I don't finish, I bite off more than I can chew, I promise things way too often and hardly ever deliver. You just need to look at my multiple runs at a series of game development articles to realize that. One thing I'm going to do differently this time? First, I'm not going to promise because there might be a good chance that I will personally lose interest in the subjects I'm talking about. Second, I'm going to try to be realistic with myself.

What does this mean for you? Hopefully, it means no more sitting around cussing at me because I've dropped something just when I got your attention. I've lost track of the number of emails I've received about "when I'll finish the damn articles already!!!!" So, with this whole move to my new home, I asked myself why I didn't finish those articles. And I think the reason is that I tried to make them more grand than I could really do. For instance, anyone that has hung around the Beginner's Forum on GameDev has more than likely lost count of the number of new developers (not just new to game development, but new to development in general) that have claimed "I'm going to build the best MMORPG EVER!". And this for their first development project ever. Not a good start, that's for sure. Well, although I hate to admit it to myself, I have been one of these very people.

I think part of it is just me getting to know myself more. I have flaws (and a LOT of them at that). Well, rather than feeling all pitiful about myself for everything I *haven't* done, I'm going to try smaller things and then be happy for the things I *have* done. Part of this attitude exhibits itself in this very blog. I've owned this domain for a long time now and have been (frankly) too damn lazy to get a hosted solution and make a proper site. The prior version was just a hacked group of static HTML pages and was a pain to maintain. I never got up the energy to get this hosted because it would "take too much work". I would have to build my own solution. I would have to add all this functionality. And after all that, it would still not be nearly as good as I wanted it to be.

Well, to counteract that feeling I got off my rear end and decided just to use dasBlog. Why? Because it was extremely easy to setup, and because it has more functionality than I could probably develop on my own with the amount of free time I have. After all, if there are already solutions out there that exist for blogging, why in the world would I develop my own when it isn't the problem I'm solving. It isn't even a problem I'm interested in solving. I just want to deliver content. That's it. So why waste my time developing a home-grown blogging solution when I could be spending that time with my family, or writing games, or writing articles about writing games, or writing music, etc.

But, really, what is the payoff? I'm hoping part of the pay off will be immediate. I've realized that the people that liked the game development articles I was writing probably don't care if I was developing a mario-clone, or whether I'm developing a simpler two-dimensional space shooter. After all, I firmly believe that the lessons learned when architecting a space shooter can be directly applied to developing a mario-clone. For me, I think the vision of developing a mario-clone was "more than I can chew". I have to admit something here, I'm not a game development expert. In fact, I haven't developed a single complete game yet (of course, that's probably no surprise to most of you who know me).

Because of this, I have decided to fire up the articles again in order to develop a simple space-shooter (the original vision). The first couple of articles that people have read will not change. The good news is that the articles posted already are still relevant. In fact, I will be trying to get around to posting those articles on this site sometime in the near future (no promises though this time :)). Maybe if I actually stop procrastinating and do something for a change, I'll be able to get back on the Z Buffer's linking good side :).

Considering how many of you I have probably let me down in the past, let's hope this is different. Stay tuned (or not, whatever).
Posted in Personal
 #       Comments [4]
[this is an interview I originally conducted earlier this year on the prior Managed World]

Tom Miller Interview

by Jason Olson, 1/4/2005

It is no secret that I love game development. It is also no secret that I love Managed DirectX (otherwise, this whole site wouldn't be here, would it?). These are the reasons that I am proud to say that I've had the pleasure over the last month or so to conduct an interview with Microsoft's Tom Miller, the "father" of Managed DirectX.

In this interview, we will find out how Managed DirectX came to be, as well as certain design decisions made while creating it. If you enjoy this stuff as much as I do or you just wish to get an insight into the man behind the scenes, I implore you to read on!!

JO: How long have you been working at Microsoft?

TM: I started working at Microsoft in May of 1997, although I didn't join the DirectX team for a while after that. I worked on small internal projects for MCS (Microsoft Consulting Services) for a few months before joining the Visual Basic (6) team later that year. I worked on various tools that shipped with the IDE. When VB6 shipped I moved over to the Office 2000 team where I worked in the 'core' office group (not specific to any one component, such as Word, but components that were shared). I wasn't in the Office team very long though, and moved over to the DirectX team in June of 1999.

JO: How did you manage to put yourself into a position to spearhead the development of Managed DirectX?

TM: When I was first hired into the DirectX team, my original job was to help in the development of the samples for the 'new' DirectX for Visual Basic (5/6) library we were shipping in the DirectX7 SDK. That quickly led to writing components for the DXVB library itself, which in turn led to 'owning' the entire DXVB development. While we were finishing up the DirectX 8.1 SDK (mid 2001), I began looking at this 'new .NET stuff' that was brewing over in the developer division. I recognized relatively quickly the high 'potential' for this technology and began working on a 'prototype' version of directx running under this runtime in my 'spare time'. Back then, I was calling this prototype "DirectX.NET" because everything was being called .NET.

Anyway, I worked feverishly on this prototype (the D3D portion) until I had a working copy of one of the more complex D3D examples in the SDK at the time. The performance of the sample was about on par with the DXVB code we had before, but was still relatively 'slow' compared to the C++ example it was based on. After showing the demo to multiple people in the group and implementing the rest of the DirectX API, we had our first 'public' showing of the technology at GDC in March of 2002.

So I guess a short answer to the original question would be: "I was like Nike. I just did it."

JO: What were your primary concerns when first architecting the Managed DirectX API?

TM: Anyone who saw the initial 'alpha' version of Managed DirectX at GDC back then (I still have the CD!) would barely recognize the code that Managed DirectX is today. The *very first* design decision was basically "Make everything look exactly like it does in the C++ world". The objects were all named just like the COM interfaces, the structures were all the same (with all the caps like D3DCAPS9), and there was essentially a 1:1 correspondence between the managed function and the unmanaged function. The API itself was nothing more than a simple passthrough between the 'managed world' and the 'unmanaged world'. It accomplished what it set out to do, but when compared to the great API work going into the .NET Framework itself, it looked outdated, and 'hard'..

We made a concious decision shortly after that release to focus on ease of use, and api consistency with the rest of the framework. The API matured, and many of the benefits it has built in now came from this focus early on. That being said, speed was never disregarded. After all, we're the DirectX team, games are the most common things created with our API's and games need to be fast. If a situation arose and the 'ease of use' method was simply too slow to be used in 'real time' in a game engine it wouldn't be used. In these scenarios we would provide a 'faster' alternative.

JO: As a developer, how much do you find yourself using Patterns and/or Refactorings, consciously or subconsciously?

TM: Sure, although I'd probably say it's more 'subconscious' now than anything. It just comes naturally with the territory for me nowadays.

JO: I notice that a lot of architectural designs with Managed DirectX correlate to designs already established within the .NET Framework. How much effort was put into leveraging the design decisions already established in the .NET Framework?

TM: If you would have seen the original version we showed at GDC in 2002 you would be surprised at how much it did *not* follow any of the guidelines.. After that release though (I essentially now had everything 'working') we spent a large portion of time updating the assemblies to fall into the guidelines/designs that the rest of the .NET Framework was using. The entirety of time spent between Beta1 and Beta2 was this 'redesign' of the API. It was quite a challenging time to say the least.

JO: Was a tool like FXCop used to verify the design of the Managed DirectX code base? If so, to what extent was it used?

TM: Yeah, we use all of the tools available to us at any given time, including FxCop. The 'problem' we faced when using FxCop is the enormously large number of 'false positives'.. Managed DirectX is written entirely in Managed C++ and the code that the compiler generators FxCop doesn't like. For example, when you declare an event in MC++ it also generates some protected methods like 'raise_EventName'.. That one item breaks two FxCop 'rules' (no underscores, protected methods in a sealed class). Multiply that by the hundreds and you can easily have thousands of these 'false positives'. We find these tools to be invaluable to the development though, even if we possibly miss some of the 'real' issues amongst all of the false positives.

JO: What type of testing takes place against the Managed DirectX API before each release?

TM: While I do have much contact with the test team for the assemblies, I wouldn't be comfortable speaking for them. I will say that they have quite a large 'sign off' sheet that they must complete before each release that includes running all of the tests they have written, all of the samples, etc..

JO: What are your three most favorite things about Managed DirectX?

TM: That could be interpreted a multitude of ways.. For example, I consider people using (and enjoying) an API that I designed and built to be quite awesome. It's definitely my favorite thing about Managed DirectX by a long shot. However, when looking at the API itself, the "ease of use" built into the API is another one of my favorite things. Lastly, i suppose it would be the opportunities that doing that work has afforded me. It's allowed me to write books, which is something I've always wanted to do, and with game companies now releasing games using the API, it's a whole other sense of accomplishment.

JO: What area do you feel has the most room for improvement in Managed DirectX?

TM: API clarity. While the API is already 'cleaner' than the native API, and more inline with the guidelines that the rest of the CLR uses, it's still not there. There's still quite a few of esoteric items that could be improved on. That doesn't even consider the new stuff coming out with Whidbey such as generics, etc.. These are all things that I have plans on addressing in the near future.

JO: Any last things you would like to say about Managed DirectX for the readers out there?

TM: Well, not that I can think of right now.. =) Keep writing the games and apps.

JO: Thanks for taking the time to answer these questions!



If you would like to read more about Tom Miller, you can find his blog at http://weblogs.asp.net/tmiller.

As usual, if you have any suggestions for DirectX, you can go through the normal channels either by using the newsgroups or emailing directx@microsoft.com.
 #       Comments [0]
In an earlier post, I mentioned how I will be getting off to a fresh and clean start here. Well, that was not entirely true. I will be finding just a couple of the "must haves" from both my old blog, and the prior version of Managed World, and I will be posting them here as new posts. Perhaps some of you never saw this stuff. If that's the case, enjoy :).
Posted in Personal
 #       Comments [0]

Okay, I promise I won't start many posts out with lyrics from Journey, but I couldn't help myself. Once again, I have shown everyone how I have absolutely no self control at all (although I'm sure all you have to do to see that is look at my picture in the upper left of the website (hey, I can insult myself, I have every right too :))). All I have to say is that I'm glad I don't live near a Krispy Kreme or I would become a large, waddling Krispy Kreme on legs, methinks. But alas, I digress.

I just turned off the lights at the old blog. It's kind of a sad moment for me. While I loved it over at GeeksWithBlogs, it definitely had its moments, both good and bad (as I'm sure this new home will have as well). I must have become quite attached to my blog because I have that same feeling I had when I left RMLS to start working for Fios, Inc. It's definitely a mixing pot filled with mixed emotions. A little voodoo soup for the blogging soul, if you will.

While I would like to say that I'm going to turn around and post nothing about thought-provoking, intellectual posts, I know that is simply not true. I will probably be just as perverted as before, if not more. I will be just as immature as before, if not more. And I will be just as loud as before, if not more (okay, I know that last one doesn't really make sense since the term "loud" is usually associated with hearing, not reading).

What does this mean for any of you? ABSOLUTELY NOTHING! I will do nothing for you. I'm here for me. "Blasphemy!" you say? Well, screw off then (just kidding, I love you all (I don't want you to screw off (really!!!))). What I mean to say is that I've thought a lot about blogging recently and, well, up until now, I've been way too worried about what people would think about what I'm posting. I was always worried about contributing valuable "technical" content. And then a thought struck me in my little wet noodle (not that noodle, I mean my head (other head!!!!)): all the blogs that I absolutely love reading, I absolutely love reading because you get to see the person behind the blog. Prime example: Rory Blyth. Rory is one of my favorite bloggers in my aggregator all because Rory is Rory because Rory wants to be Rory. Well, one thing is for sure now: Jason wants to be Jason, nothing more, nothing less.

I need to learn to embrace what and who I am. I don't think I'm a guy who is going to be contributing golden thought-nuggets to the society jeweler every week. I'm just a quirky guy is who tries his best to lighten up people's days by making them laugh (and tend to pole vault across the line of what "normal" people consider "socially acceptable"). So, that's who I'm going to be from now on. I'm just going to be myself. No worrying about whether I'm detracting from the overall site or not because the site is about ME, and nothing but ME (okay, that won't certainly always be the case). Of course, people like Rory have been telling me these kinds of things for a while, but it took me getting hit over the head with an apple (literally (as in, literally = not really)) in order to realize this.

So, I can't promise that I will post that often. I can't promise that my posts will actually have any "content". What I can promise is that I'm going to be myself and I hope that you find that refreshing and join me on my long journey.

Now if you'll excuse me, it's quite late (or quite early depending on how you look at it) and I need to get up in a few hours in order to work. I'm frankly surprised my eyes stayed open long enough to make this post. Goodnight!

Ciao!

Posted in Personal
 #       Comments [2]
# Thursday, May 12, 2005

Scott mentioned how he noticed more people moving to DasBlog. Well, add me to the list, yo! I've been wanting to move my blog off to my own site for a while now in order to let my feet dangle in the deep end of the blogging pool of the world for a bit. I figured it was about time to stop being lazy and to just take the plunge.

Before I get the motor rolling too much, I just want to give a HUGE "Thank You" to Jeff Julian over at GeeksWithBlogs for being such a gracious host while I was blogging over there. I would recommend that site at the drop of a hat for anyone wanting to get started blogging without having to worry about their own hosting/domain situation. Now, on to the new (but not necessarily improved) Dog and Pony Show!

You know what? I can tell I'm getting older (or perhaps just [::GASP::] more mature) when I made the decision at the drop of a hat to use an established blogging application rather than home-growing my own. There are numerous reasons why I made this decision but, alas, that is not the purpose of this post my friends. In order to make the move easier, I have made the difficult decision to leave all my old content over at geekswithblogs. This will also allow me to get a "fresh start" in my new home.

I fully expect that I will lose quite the number of readers by moving here (not that I had that many to begin with). But for those of you that have followed me over here, I want to just say a couple of things (although you should feel free to ask questions if I miss something). The game development articles (and other articles) that I had over at my old blog (and on this site when it was still static html before the move) will be moved over here over the next couple of weeks as regular posts. I figure that a blogging engine is all I really need right now to do what I wish.

As you can tell, I don't have much to say, but I wanted to do more than the "Hello World" thought-turd you see done everywhere else.

Anyways, welcome to my new home :).

Posted in Personal
 #       Comments [0]

Contact

Email Me Send mail to the author(s)

Calendar

<May 2005>
SunMonTueWedThuFriSat
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

About this site

Jason Olson's thoughts on Programming, Games, Music and Life in General

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Jason Olson

Sign In
All Content © 2008, Jason Olson
Theme based on 'Business' created by Christoph De Baene (delarou)