Tuesday, June 21, 2005

Where else, over the course of two days, can you get all the latest news and demos of DirectX Gaming goodness?  Meltdown 2005, of course!

This is going to be a lot of fun!  Mike Morhaime (Blizzard, you know...they guys who have built an enormously popular game) will give the keynote.  But it's more than just cool gaming celebrities talking about games...you'll get all the latest scoop on DirectX, Longhorn, and Visual Studio.  Of course, there's all the great networking opportunities as well.  I mean, where else can you meet pretty much EVERYBODY on the DirectX team in one location?

Here's some of the many cool presentations you'll see:

  • DirectX: Today, Tomorrow, and Beyond (Shane Evans)
  • Optimizing Windows Games (Kev Gee)
  • Optimization Best Practices with VC2005 (Kang Su Gatlin)
  • Debugging Tips and Techniques for C#/C++ Developers (Habib Heydarian)
  • Visual Studio 2005 Team Edition for Software Developers: Profiler Tips and Tricks (Steve Carroll )
  • Performance Investigator for Windows (PIX) ( Mike Burrows )
  • Next-Generation Graphics on Longhorn Revealed (Sam Glassenberg & Craig Peeper)
  • Microsoft Windows Gaming – Business Trends, Opportunities and Strategies (Rich Wickham )
6/21/2005 12:29:30 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Sunday, June 19, 2005
I wrote this for my father on Father's day 2001.  Before I joined Microsoft, before 9/11, and before we learned he had cancer.  It is still an important message to my father, and I felt it should be shared on this Father's Day....
 

Tribute

 

How many men, like myself, have strolled through memories of their past, kicking them up like leaves in a cool autumn morning?  Do they spend time among those recollections finding moments both shameful and glorious?  How does a man reflect upon himself, wondering how others will judge him when he passes this world? More importantly, I find myself asking, “How will my children remember me?”  Sadly, it is during those moments that all my mistakes as a father shine like a million stars.  What if I had spent more time with them? Was I overly stern when I could have been affectionate?  Did I pay attention to their needs? Did I do enough?  I can only find solace in my own recollections as a child, imagining my own father wondering those same thoughts.

 

My memories carry me to so many places.  My father, having been in the military, was reassigned many times during my childhood.  As any “military brat” will attest, it is a nomadic life.  Concepts taken for granted by many were alien to me: the hometown you never outgrew; childhood friends who have become adults; the high school you saw when you were in the third grade, knowing that when you became a “big kid” one day, you would be going there; the little girl you kissed in the fifth grade who you were sure you’d marry, but didn’t. Yet my life was not without rewards, I have traveled through nearly every state in the US, visited nearly every national monument, and lived in one fourth of the states.  I have had palm-tree Christmases in California, and wallowed in two-story high snowdrifts in North Dakota.  I have seen moose and bears in the Alaskan wilds, and marveled at the Aurora Borealis as that cosmic curtain danced across the night sky.  I have endured the summer storms of Florida, watching sheets of rain relentlessly pound at our home, while jagged streaks of lightning rendered the air into ozone with a thunderclap that would make Zeus himself proud.  I have lived and breathed this place called “America” as few children could.  Every place, every accent, every ocean that touches this land is in my bones, and thus it is that my hometown is America itself.  So it is that my memories play across that vast stage, yet always with the same theme: A child in a large, lonely world, crying in the dark, and rescued from oblivion by moments with his father.

 

During many of my childhood years, my father was away from us; sent off to strange lands like “Viet Nam” and “Thailand”, tiny pink and lime-green colored blotches on a grade-school globe. Weeks appear as years to a small child, and my memories say I lived several lifetimes waiting for his return.  I could comprehend nothing more about those countries save this: They had my father and I didn’t.

 

Because we traveled so much, my comfort could never come from the company of close friends, those confidants we shared our deepest thoughts and feelings with.  Instead, my comfort came from the company of books.  Comic books regaling about Achillean heroes, mystery novels showing the pinnacle of human intuition and the depths of human greed, science fiction novels promising a world and time unheard of, and science books, helping me understand where science ended and where fiction began.  These paper friends brought me comfort while my father was away, and yielded much conversational material upon his return.  My father would ask me what I’d read lately, and I would tell him the stories of how many space pirates or bad guys were vanquished by my heroes.  And yet, I hope he saw in my eyes that each and every one of those heroes in my books held a special place in my heart: to me each one resembled my father.  While my father was gone, he merely moved into my books.  No matter where he was, he never left my side.

 

During my sixth grade year, I began to explore my interests in writing.  I had written a play that spoofed a very popular science fiction show of that time.  For a sixth-grader, it was a work of art.  For a play, it was horrid.  But my father, bless him, graciously offered to make a few “suggestions”.  The next day, I found myself with a paper that not only retained the spirit of my work, but also made it into a very workable play.  My father had given me the gift of his guidance, and the end result was my teacher offering to have this play presented to the whole school.  And so it was our entire sixth grade class banded together, studied parts, painted sets, and rehearsed until we realized that plays were boring after you’ve read through them for the one-hundredth time, and that acting was really hard work.  It paid off well though, we presented the play to the entire school, and it was an unparalleled thrill to hear the laughter of classmates as we progressed through the play.  My father was also there, as he brought his talents into helping produce the play.  At the end of the play, amid all the applause, there was a special moment for me.  I stood on the stage with pride, knowing that my father, a mere few feet behind the curtain, had helped me achieve this magical moment.  Again, even though he wasn’t right next to me, he never left my side.

 

Life, they say, is a book; each part neatly enclosed in chapters that we could only define in hindsight, ultimately leading to an ending that we can never escape.  So it was that my days as a nomadic child were entering their twilight.  In a matter of a few months, my father had remarried and retired from the military.  We moved to central California, where my father began taking classes to get his college degree.  I, in the meantime, was now in the middle of my sophomore year, and placed into a traditional suburban high school. There were no “comrades in arms” here.  None had suffered the sting of changing schools twice, sometimes even three or four times, in the same year.  Everybody had always known each other.  This time I was truly alone.

 

My father’s workload had increased now.  Not only was he going to school full-time, but he was also trying to work whenever he could to help us make ends meet.  If he wasn’t at work or at school, he was busy at home working on his homework.  Sometimes I would watch him in his den, hunched over the desk, studying non-stop, his brow furrowed in concentration.  The drafter’s lamp casting its sharp light on the papers spread over his large desk.  It was impossible to count the number of times I would go to sleep, hearing the faint clack-clack of his electric typewriter as he churned out another term paper.  In spite of the numerous years I had grown up with him away from our family, it now seemed he was even more removed, even though I could see him in that room.

 

I began to resent that typewriter.  The faint purring of its electric motor, the sound of the platen responding to the “Return” key.  Every sound it uttered screamed to me, “I have your father and you don’t.”  I began to think that typewriter should be named “Thailand.”

 

And yet, the pain wasn’t as intense.  I was in high school.  I was more mature now.  I knew everything.  I still had my books to keep me company, and a relatively new invention had just poked its head into our stodgy school: The Computer.  I quickly discovered, almost by accident, that computers and I got along very well.  Alas, I neglected my other studies, and before I realized it, I was woefully behind in assignments in every class.  It was possible I might even fail a few classes if I didn’t get certain writing assignments turned in. 

 

There was a twisted irony in all this – I still liked writing.  There were days when I felt that the paper was my canvas, and I had unlimited power to bend words to my will.  Before the computer appeared, I was going to make my career as a writer, aspiring to equal the greatness of prolific science-fiction authors such as Bradbury, Asimov, or Heinlein.  My father, too, was a writer.  I would sometimes gaze in wonder at the articles he wrote in our local paper, laughing as I read his humorous stories again and again.  So it simply didn’t seem possible that I, a lover of writing, was missing not one, but several deadlines.  I have since learned that this is a perfectly normal thing for writers.

 

At the desk in our living room, I sweated over finishing a paper on anthropology.  The teacher’s assignment was a playground for my mind: Create a society and describe aspects of its culture.  She had handed me the canvas, and I was failing to answer its call.  I wish I could blame writer’s block, but I had instead chosen to explore the nooks and crannies of the silicon world while neglecting this assignment.  I barely had anything started.  Some scrawled notes, nothing more.  It was midnight, and I was at my wit’s end.  Frustrated and tired, I buried my head in my hands and tried to breathe deeply, to clear my mind.

 

A hand touched my shoulder; my father had come in from the den and saw me sitting there.  I sheepishly explained what I was doing, or rather, not doing.  He looked at me, smiled, and suggested he could help.  I handed him my notes, and we went into his den.  The typewriter was humming, taking a rest from the incessant pounding my father had been giving it.  Its quiet whirring and occasional slight chatter from deep within it made it seem as if it were something alive.

 

I sat in the recliner in his den, answering each question he asked me.  “What are these people like?”, “Where do they live?”, and so forth.  He quietly scribbled away for a few moments, and then smartly fed a sheet of paper into the typewriter.  His fingers danced across the keyboard, the chatter of the metal hammers against the platen became almost rhythmic. 

 

I felt the tension wash away from me as I listened, knowing my fleeting thoughts and random ideas were coming alive by his good grace.  That typewriter that had tormented me was now wrapping me in an auditory embrace.  It was a siren’s song to the man-boy that I was, and I fell into a trance.  Sleep enveloped me as I laid there in that recliner, and I drifted away, listening to that typewriter and my father dance.

 

The sharp ray of the morning sun crossed my forehead and over my eyelids, waking me.  The room was empty.  The typewriter was cold and silent.  My father had already left for his morning classes.  On top of the typewriter were four crisp, white sheets of double-spaced type.  My assignment was done, and I felt a simultaneous sense of guilt and relief as I read it.  I didn’t even get a chance to thank my father for his help, and I knew I wouldn’t see him again until late in the day, when he returned home from his evening job.

 

It is somewhat anticlimactic to say I received a good grade for that paper.  Somehow I managed to finish my other writing assignments too, perhaps spurred by the guilt at needing his help for that first one.  It doesn’t matter.  What mattered is that he was there when I needed him, even when I thought he wasn’t.  He had again shown me that he hadn’t left my side.

 

So I sit here now, trying to understand what tribute I can give to my father.  What monument could I construct that would summarize the scope of his efforts?  What mighty work of art could describe how he made me who I am, and how he helped me make my children who they are?  I stare again at a paper canvas, and call upon the sum of my writing skills.  The words pour forth easily, and I hope my words ring in the hearts of all fathers forever…

 

“Thank You.”

 

6/19/2005 11:14:32 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [3]  |  Trackback
Wednesday, June 15, 2005

Hot off the presses!  Visit the WindowsGaming website and download your free WOW skin for media player!

(And don't forget to check out the Father's Day gift guide while you're there!)

6/15/2005 12:50:01 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Wednesday, June 08, 2005
I'm involved with the PDC this year and I'm really looking forward to it.  We'll be doing some fun things as well that are related to my new job (not telling yet :-) ).  One thing that's really cool is the amount of energy an excitement you can find over on Channel 9.  There's even a section dedicated to the PDC.  One subsection lets you set up pieces of PDC "flair" to put on your webpage.   Of course, being the irreverent bastich that I am, I created my own flair.  Feel free to use or abuse it :-)
 
 
6/8/2005 8:27:06 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Tuesday, June 07, 2005

Yes, folks, two months have passed, and regular as clockwork, the fine engineers in the DirectX group have delivered another update to the SDK.  So, what is special about this release?

  • Support for Visual Studio 2005!
  • Improved samples!
  • Enhancements to PIX!
  • And lots more!

Oh, and for those of you really into getting the latest on DirectX goodness, don't forget to register for Meltdown 2005! (Yes, I'll see you there!)

6/7/2005 11:40:15 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Saturday, June 04, 2005
Recently, I was asked what kind of books I keep on my bookshelf as I'm doing my game programming.  This collection is a small monument to the money I spend on game programming books (Yikes!  I just realized there's about $1500 worth of books there).  The sad thing is that there are several that I haven't thoroughly read yet (I just recently got the Game Programming Gems books, plus the 3D Architecture and Game Physics books by David Eberly).  Several of thesed books cover the same kind of material in various levels of detail, and at some point in time I'm going to cull this collection WAY down.  In the meantime....I keep reading, programming, reading, programming, reading, programming...
6/4/2005 1:53:03 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Writing a book is no easy task, especially a technical one.  In my case, I'm writing the second edition to my relatively-popular "Beginning .NET Game Programming in C#" book.  The challenge is that this is looking more and more like a rewrite than a second edition.  Why?  Let's look at the list:
  • Four out of the eight chapters are being removed
  • Code examples will be rewritten to use new .NET 2.0 features in appropriate places
  • The book will be written (hopefully) to put beginning developers on the solid path to writing games for Longhorn, although I won't cover Longhorn features explicitly
  • I will attempt to bring the black art of shader programming to the beginner level (In the inimitable words of Spongebob, "Well, good luck with that.")
  • I may (or may not...still not 100% decided) include some chapters on Avalon game programming
  • DirectPlay is now deprecated (hey you with the surprised look on your face...did you read the README in the latest DirectX SDK release?), so I need to use a different approach for networked gaming (and, no, it won't be Indigo -- I want to provide a foundation where the managed game developer can scale into native development)
  • I intend to add explicit chapters on physics, AI, and collision detection.
  • I will also have a chapter devoted to helping the developer understand the relationship between Windows programming and working inside the CLR
Originally, I had planned to have the book on the shelves by the end of this year, but I need to balance that with offering a book that has relatively stable examples.  There's nothing more frustrating than buying a book and having it become horribly outdated in less than a year.  That's why I try to keep the source code printed in the book as minimal as possible, and instead point you to the downloadable source.  In addition to the potential technical delays, my new job is going to keep my hands VERY full over the next several months.
 
Lastly, at the moment, I'm sticking to a C# version for now, but my publisher is asking (more like begging) that I consider a VB version, as well as a C++/CLI version.  While this is interesting, I just don't have enough visibilty into the demand for something like that.  I did a VB version of my first edition, which hasn't seen a lot of demand.
 
 
6/4/2005 1:00:16 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Thursday, June 02, 2005
Wednesday, June 01, 2005

I've had a blast being a technical evangelist for the Developer Division over the last 3 years, but I've recently accepted a new position as the Community Manager for the Windows Graphics and Gaming Technology group (I officially start on July 1st).  This is going to be a totally rocking job, and will let me reach out to a community that has been pretty starved for attention for quite some time.  My job will focus primarily on developer outreach for Windows game programming (both Native and Managed). 

First on my list is to re-energize the DirectX Community site, which is quite spartan right now.  This is a big challenge, because there are so many places that Windows game developers already go to for dicussions and information (GamaSutra, GameDev, The ZBuffer, CodeSampler, FlipCode, IGDA, Channel9, etc.).  We don't want to try to displace all those great sites, but we want our developers to know that their issues are being heard by the Windows Gaming team.  This means that we need to channel feedback in appropriate ways so that we become better listeners, preferably in partnership with sites like the ones above.  I'll be posting more details about this as time goes along.

Second on my list is working with current and new MVPs to help us with community outreach.  These folks are brainy-smart people (much smarter than I am about game programming!) and are outstanding community leaders.  If you know somebody that is deserving of an MVP role, please don't hesitate to drop me a note!

Third is "everything else about Windows Gaming."  That means speaking to independent game developers at various conferences, helping people understand some of the "Whys" about DirectX, getting community feedback on what you want/need in future SDK releases, etc.

In a nutshell, my new job is all about Windows Gaming.  All I can say is.... "w00t!" :-)

David "ChiliConCarnage" Weller

6/1/2005 12:03:02 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Wednesday, May 25, 2005
Most people inside Microsoft know who Hans Bjordahl is, or are at least familiar with his funny "Bug Bash" cartoons.  It really captures the essence of the IT world, and FAR be it from me to suggest that some of the ideas were influenced by things that have happened inside Microsoft! :-)  Anyway, please take the time to check out Bug Bash!
5/25/2005 3:11:00 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback

So, eWeek decides to post a headline article today entitled, "Microsoft .Net Framework 2.0 Breaks Apps."  Hmm.  The article itself isn't that bad, carefully note that between the blazing headline and the closing quote from "one developer familiar with breaking changes related to the rollout of Windows XP SP2, who asked not to be identified", there are lots of good points about the successes our customers have had and how we're being as thorough and careful as possible to keep developers informed and aware. Yes, there have been a few unavoidable compatibility issues, but that headline seems woefully wrong based upon my own experience with 2.0 adopters.  We've had millions upon millions of lines of code migrated already by our early adopters, and we've responded as quickly as possible to issues that come up.  We've also thoroughly documented places where impacts can happen.

In the past, we (Microsoft) might have groused about such a poorly-titled headline and moved on, but blogging allows anybody inside Microsoft to have a voice.  In this particular case, S. Somasegar, the VP of the Developer Division here, decided to respond to the article

5/25/2005 2:30:39 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
In case you're one of those rare people that still doesn't have the beta of Visual Studio, you can still get it by visiting here.
5/25/2005 12:23:23 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Monday, May 23, 2005
In case you haven't heard yet, the new Avalon and Indigo release (Beta 1 Release Candidate) is now available.  Runs on the Beta 2 build of Visual Studio 2005.  Get the bits while they're fresh!
5/23/2005 9:10:43 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback

Kinda like this.

Ok, not that extreme, but interviews at Microsoft, even internal ones, can be pretty exhausting.

(Don't ask.  I'll give details later.  Stay tuned.)

5/23/2005 9:04:30 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Sunday, May 22, 2005

I was tinkering this weekend with the new C++ compiler and wanted to try out the samples from the DirectX SDK April 2005 Sample Browser.  Of course, the April 2005 SDK wasn't written for Visual Studio 2005, so here's a couple of simple steps to make things work:

  1. Add correct references for your headers/libraries:
    • Select Tools-> Options->Projects and Solutions-> VC++ Diretories
    • In the "Show directories for:" dropdown, pick "Include files"
    • You will see a list of directories there.  Verify that "$(DXSDK_DIR)include" is in the list.  If not, add it (click on the little "Folder" icon to add a new entry)
    • Now, in the "Show directories for:" dropdown, pick "Library files"
    • You will see a list of directories there.  Verify that "$(DXSDK_DIR)lib\x86" is in the list.  If not, add it (click on the little "Folder" icon to add a new entry)
  2. Pick the sample you want to install (I tried this on EmptyProject, Blobs, and CustomUI)
  3. After installing the project from the DirectX Sample Browser, double click  the <Project>_2003.sln file to launch Visual Studio and run the conversion wizard.
  4. You should have a successful build and be ready to roll, but you might also encounter fatal linker errors (CVT1100 and LNK1123).  If you get these messages, remove the .manifest and .rc files from your "Resource Files" project directory and try again.

Have fun! :-)

5/22/2005 10:30:48 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Tuesday, May 17, 2005
Ok, the "big cat" is out of the bag: The XBox 360 will be able to run old Xbox games!  This has definitely been a nail-biter for the industry and hard-core gamers, so it's great that we've paid attention to these concerns.  The Xbox 360 is going to TOTALLY rock and make the living-room gaming experience something cool again.  My buddy, Brian Benincasa, had several cool announcements in his latest blog post, including his promotion to Lead Evangelist over in the Gaming and Graphics group and "leveling up" his family.  More interesting are Brian's comments about whether the Xbox 360 will replace the PC as a gaming platform.  I definitely agree with Brian here -- the PC will be a FAR more flexible platform for gaming.  But each are two platforms offering different, but uniquely satisfying experiences.  Not unlike trying to decide if you want to go for a ride on this or this. :-)
5/17/2005 9:31:57 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [3]  |  Trackback
Sunday, May 15, 2005
And old friend of mine, Casey Chesnut, got adventurous and looked into porting NASA's Worldwind "Virtual Earth" program to the PocketPC.  Mind you, this wasn't a trivial task, but thanks to the fact that Managed Direct3D for Mobile Devices is available now (at least in beta), and the fact that Casey is a mobile computing freak, this is a tremendous achievement!  Not to mention the fact that it was Casey's first foray into the world of Direct3D.
 
 
P.S. Interesting story about Casey (and myself)...I first met him when I was in the last leg of interviewing for a job at Valtech back in early 2001.  Casey and a friend were hosting the very first Dallas .NET Users Group meeting in Valtech's education offices, and the CTO of Valtech (Tim Snyder) encouraged me to attend.  Now, you have to keep in mind, I was a pretty hard-core Java person at this time.  I'd recently had an article on regular expressions published in the Java Developer's Journal, so I wasn't really that open-minded about "another Microsoft marketing ploy" (man, if you had told me then that in just over 2 years I'd be an evangelist working for Microsoft, I'd have stomped you flat!).  Anyway, Casey's presentation was done really well.  He touched on several good points and even did some comparisons to Java, and I was impressed!  It wasn't, however, until the tragedy of 9/11 that I got to dive deep into .NET (I was a traveling consultant and the world kind of stopped then, y'know?).  At that time, Tim asked me to do some deep investigation using the latest beta of Visual Studio.  4 weeks later (after working VERY hard at trying to prove that Java was a better choice) I was completely won over, and told Tim I never wanted to work in Java again.  The rest, as they say, is history :-)
5/15/2005 9:01:47 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Friday, May 06, 2005

My next door neighbor at work, Robert Scoble, has posted the full text of Steve Ballmer's reversal of position regarding the Washington State anti-discrimination bill.

I'm greatly relieved that Microsoft will be supporting this bill, because it is a fundamental acknowledgement of the fact that Microsoft does support diversity.  These last couple weeks have left many people, including myself, doing some inward soul-searching.  Our neutral stance on the bill bothered me, because I felt it was backpedaling away from what we consider to be core company values.

I've said enough now.  I'm sure others will have a LOT more to say about this.

5/6/2005 10:59:51 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Thursday, May 05, 2005

Tom Miller finally states the last word on the subject of game loops in Managed DirectX code.  Now that I'm starting the 2nd editions of my book, I'll be incorporating this into the code. 

And while I'm talking about game programming... check out Grant Palmer's Physics for Game Programmers.  Yeah, yeah, I know there's about a billion books on Physics for game programming already (well, it seems like it), and I also readily acknowledge that Grant's publisher is Apress, who happens to be my publisher.  But....but...Grant's book is FUN!  First, you can get the source code directly from Apress' website (I'm glad to see Grant chose this option, just like I did -- it keeps publishing prices down).  Second, although this book throws massive volumes of brain-cramping formulae at you, the implementations (and most explanations) are in simple terms.  And he's no language bigot either -- you can get the samples in C#, Java, and C (the text samples are in Java).  Third, and this is the fun part, his book is full of semi-useless trivia about physics that are just plain fun to read.  Chapter 13, on explosions, gives you an interesting, but brief, outline of the composition and uses of popular explosives like TNT, dynamite, and C4.  About the only downside to his book is that he doesn't dig into some stuff as deeply as I'd have liked.  However, I think his book perfectly hits his target.

Speaking of exploding things, my favorite director, Kevin Smith (Clerks, Dogma, Chasing Amy, etc), has written a thorough review of the new Star Wars movie, "Revenge Of The Sith"  Before you click on the link, I am giving you fair warning...this review has TONS of spoilers!!!!  If you don't want to know what happens, do NOT read this review.  (Can't say I didn't warn ya :-) ).  Thanks to Doug Purdy for pointing me to this link.

Oh, and I finish my weight loss program tomorrow....6 months later....60 pounds lighter.  Woot!  10 more to lose on my own to hit my target weight.

5/5/2005 1:06:55 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2]  |  Trackback
Thursday, April 28, 2005

Two cool tidbits. 

First, my colleague, Karsten Januszewski, did a totally cool demo at the Flash In The Can conference where he showed some new features coming in the next release of Avalon.  Check out what you'll be able to do with multimedia in Avalon now!

Second, something near and dear to my heart: Anti-productivity applications!  Better known as "Games." :-)  MSDN is hosting a series of webcast videos, produced by the game-instruction masters at DigiPen Institute, on how to write games.  The cool thing about this one is that you can use Visual C# 2005 Express Edition to follow along.  Go forth and have fun!

Other interesting, non-work-related things:

It appears that a palmtop nuclear fusion device has been invented by Oak Ridge National Laboratory.

Another part of Oak Ridge National Laboratory called BS on those findings.

Coming next week....my take on Tiger (my OS upgrade gets here tomorrow.  Woohoo!)

And, yes, I will revisit the "Mac Experience" that I've posted before.  Thanks to some great feedback, I've purchased Aaron Hillegass' book "Cocoa Programming for Mac OS X, 2nd edition".  I'm going to dive deep into looking at what the new XCode 2.0 has to offer, as well as some other new features (for instance, did you know that Avalon lets you quickly write Konfabulator-style applets, similar to what you can do with the new "widgets" on the Mac?  Of course, when people see them, they'll say, "You copied that from the Mac!"  *sigh*).  It's gonna be a loooong weekend for me!

4/28/2005 9:47:32 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Friday, April 22, 2005

I've only worked with Vic Gundotra for a little over a year now, but it's been an absolutely fantastic experience.  Today, he started a blog.

Mind you, this isn't some kind of blog where a corporate PR person makes up stuff and the exec pretends he said it.  Nope, Vic is the real deal.  He's grokked blogging right from the beginning. That's why there's people like Robert Scoble in his organization.  But until today, he's kept behind the scenes in the blog world.  This seems strange to me in a way, because Vic is kind of what I consider an "Evangelist's Evangelist."  This probably explains why he's the GM of the Evangelism group, but it goes beyond that.  His energy, enthusiasm, and outright passion is quite infectious.  But he's not simply a mouthpiece for Microsoft.  Vic believes in the power of software, and when he sees something that doesn't sit right with him (or more importantly, our customers), he can bark pretty loudly.

Ok, I've rambled too much.  Go read his first post, "In Defense Of The Company I Love" and hopefully you'll get a taste of what I'm talking about.

4/22/2005 8:31:50 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2]  |  Trackback
Monday, April 18, 2005

I was browsing Andy "ZMan" Dunn's website, The ZBuffer, this evening and came across some interesting new tidbits.  I continue to be amazed at that people are doing in C# with Managed DirectX.  Case in point: HADDD.  These guys have created an amazing free 3D engine for first-person shooter games.  They've created two demo videos (XVid codec required) which are well worth downloading.  The first video does a great job of creating a "teaser" trailer for a game....dark lighting, mood music, things that go bump in the night.  Turn off all the lights and watch it with the volume turned up.  Creepy.  Written in C# (Using the latest C# Express beta no less!) and Managed DirectX.  Enjoy!! 

P.S. -- Brush up on your Spanish if you intend to read the forums or the source comments. 

4/18/2005 9:18:00 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback

One of my co-workers, Jeremy Mazner, has posted openings to hire technical evangelists for Longhorn and Internet Explorer.  Jeremy is a great guy to work with, and being an evangelist at Microsoft jut plain R-O-C-K-S!!

4/18/2005 4:33:19 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Sunday, April 17, 2005
The latest news, in case you haven't seen it:
  • MSDN has a new area called "Coding for Fun" that includes a section on game development
  • Two other Managed DirectX websites that have been around, but I've somehow missed: Inner Realm, powered by Community Server (which also powers the MSDN blog site where my InkBlog posts are echo'ed on), and Michael Russel's "Roms Rants".
  • ArcsOfFire.  Interesting Tablet PC game, but it still has some rough edges.  Source is available though.
 
Finally, Kitten Cannon has been a great time sink for me.  It's funny to find a game like this, because I'm actually writing something similar for my book.  Except I won't use kittens......because full-grown cats have MUCH more momentum :-)
4/17/2005 7:07:51 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2]  |  Trackback
Wednesday, April 13, 2005
Only a sick, twisted person like me (and thousands of other gamers) could love a cartoon like this.
4/13/2005 11:03:08 AM (Pacific Daylight Time, UTC-07:00)  #    Comments [0]  |  Trackback
Thursday, March 31, 2005

I used two different styles of game loops in my Managed DirectX books.

Both approaches were wrong.

It seems that our stalwart Rick Hoskinson has spent a little groktime on this and has reached, he believes, the Perfect GameLoop.  My publisher is pressuring me to do a second edition of my game programming books, so maybe that's a good time to make the move.  Anyway...give it a read if you're into getting the most performance out of Managed DirectX apps (and who isn't? :-) )

P.S. -- For those of you reading this post on InkBlog (my "personal" blog), you'll notice a few changes.  I finally got around to upgrading to dasBlog 1.7.  Welcome to my new old blog :-)

3/31/2005 3:26:58 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [1]  |  Trackback
Thursday, March 17, 2005

I bought a Mac Mini last week.  The day before I left on vacation, a tiny box from Apple appeared at my doorstep.  In a fit of boldness, I decided to take it with me and spend part of my weekend in Texas pounding away at it.  I wanted to get a feel for the kind of user/developer experience a Mac user would get as an “out of the box” experience and share it with you.

 

A few of caveats before I begin:

  1. This is a really long blog entry.  I spent an entire weekend in a love/hate relationship with my new Mac.  I want to share the whole experience with you.
  2. I deliberately avoided the “multimedia experience” of the Mac.  The features of Apple's iTunes/iDVD/iPhoto stuff are pretty well-known.  I was more interested in what kind of experience an average Windows developer would have.
  3. It's possible, especially during the development part, that I've done something that wasn't "The Apple Way."  I haven't touched an Apple since 1991, so any errors/omissions/undeserved grousing is entirely my responsibility.  If you read something in here where you think I'm just plain wrong/daft, pop in a comment and correct me.  I love my PC, but I'm also a Mac owner now, so any suggestions you can offer that would make my experience on here a better one is very welcome
  4. Yes, I work at Microsoft.  Yes, I'm an evangelist at Microsoft.  No, I'm not being paid to write this, nor am I writing this to be a shill for Microsoft's products.  I spent my own money to buy a Mac, and what you are reading is my own opinion.  I will say good things and bad things about the Mac.  You have been warned.  

 

The Out Of the Box Experience

 

Big kudos goes to Apple here.  My Mac Mini was a relatively high-end configuration. It had a 1.42Ghz G4 CPU, 80gb HD,512Mb RAM, DVD RW, built-in Bluetooth/802.11b/g, plus Bluetooth mouse/keyboard.  Microsoft employees actually get small discount from Apple, and the total “shipped to the door” cost to me was under $1000.  Looking back now, I recommend bypassing the Bluetooth mouse/keyboard combo and sticking to whatever Mouse/Keyboard combo you like (Microsoft, Logitech, etc.).  Aside from my rants about the mouse (see next section), I also noticed my Apple bluetooth keyboard occasionally didn’t send a character to the screen.  I can’t tell if this is because I’m having difficulty in typing with a “non-split” keyboard or if it was a Bluetooth problem.

 

Opening the (extremely small) box was simple, as was hooking the computer up to the monitor.  Startup was very simple, and after a short “first user setup” sequence, it hooked up to the Internet and identified several updates to install.  This procedure was simple, and each step was clear.  Other than the mouse issue, a Windows developer would have little to no difficulty getting used to OS X (and to an old Unix guy like myself, I'm quite fond of popping up a bash shell anytime I want -- of course, I can install Windows Services for Unix and get bash on my XP box).

 

The overall visual and performance, even for such a tiny box like the Mac Mini, is quite impressive.  The glass effects and visual behaviour of the dockbar is impressive, and overall visual presentation is simple.  One really cool thing is Expose, which allows you to quickly organize and look at all the open windows at once with just one button.

 

Apple’s Glaring Wart

 

In my opinion, this is a major Achille’s heel of Apple – their persistent belief that people want/need a one-button mouse.  My Mac Mini came with a Bluetooth keyboard and mouse, but the experience of a one-button mouse was nothing short of miserable.  What is ironic is that I suffered the EXACT same problem when I was first developing on a Mac IIfx running A/UX back in 1990.  You'd think that Apple would at least offer a three-button mouse as an option (although the latest news from Engadget says Apple is about to offer a two button mouse -- That would be nice -- a 21st century OS with an early 90's mouse). Fortunately, the Microsoft wireless mice/keyboards work GREAT with the Mac.  Even better, almost ALL software on the Mac is actually smart enough to understand right-clicks and the scroll wheel.  Um, Apple...if you wrote the software to support 3 mouse buttons and a scroll wheel, why not offer hardware to match the functionality?

 

Would You Like To Play A Game?

 

Let's be honest, you probably won't buy a Mac Mini for its gaming power.  That being said, I decided to give a few games a whirl.  The Marble Blast game that came with the Mac was cute (but simple).  The "Nanosaur2" game bordered on stupid (both in terms of gameplay and controls).  I also own World of Warcraft, which will install on either a Mac or PC, so I loaded that up and gave it a run.  Not pretty.  Yes, it was playable, but barely.   

 

Developers Developers Developers Developers

 

This was really the ultimate test.  What is the experience like to develop on a Mac?  How easy is it, compared to something like VB.NET or C# development?  This is my summary: In spite of Apple's XCode development tools coming for free with Mac OS X, developing on a Mac sucks like an inverted hurricane.

 

There are two primary paths a developer can take when writing code for OS X:

1)    Carbon: This is the C/C++ interface for writing Mac OS X applications

2)    Cocoa: This is the Objective-C/Objective-C++ interface

 

Unlike the managed/unmanaged demarcation Microsoft has with .NET, the Carbon/Cocoa difference is more about preference and background more than execution environment.  For instance, you can call Carbon APIs from Cocoa, and vice versa.

 

Performance-wise, Carbon apps are (theoretically) a little slower because they use a more object-oriented framework.  As a comparison, one game programmer indicated that a file management component took 800 lines of code in Cocoa, versus 18,000 in Carbon.  Generally speaking (from what I can tell), newer apps should be written in Cocoa, while older apps (C/C++ based) will benefit from using the Carbon APIs (Office for Mac is written using Carbon).  I will focus on Cocoa app writing for this entry.

 

I wanted to start with a simple window that had a few controls, just to get a feel for what my development would look like.  When you launch XCode and create a new project, you’re faced with a large array of startup options, generally either Cocoa or Carbon apps, but also including the ability to develop Java EJB or Swing applications (I'll skip over this part except to say this -- if you want to write a Java app, forget about XCode and use Eclipse).

 

After you select a Cocoa application, the XCode project window opens with a set of pre-populated files.  Although it looks nothing like Visual Studio, I didn’t find the layout to be too arcane/overwhelming.  One thing that was VERY different, however, was the process to create and wire up a GUI.  To begin with, you must launch a separate Interface Builder tool.  The tool is laid out rather oddly (from my prespective), but a quick read of some developer documentation helped. Unfortunately, playing “drag and drop” with the controls was the only easy part of the task.  The process of wiring up outlets and actions (similar to properties and events in .NET) is nothing short of wierd.  What would take a .NET developer a scant few minutes to do takes easily three to four times as long with the Interface Builder.  Compounding this is the fact that generating the code is effectively a one-way trip.  You really can't go back and add/change things without a lot of pain (According to the Apple docs, “Once you have created .h and .m files for a new class…, you should not use the Interface Builder Info window to add more actions and outlets to the class.”).Once the code is generated, you're back in the XCode development tool, and you begin "filling in" the code stubs generated by the Interface Builder tool.  This process is also quite painful, as the XCode editor has only redimentary code sense and contextual help (again, I emphasize I'm comparing to Visual Studio).  In addition, there is little to no help to warn you about potential errors in your code (I didn't turn on the "predictive compilation" feature though, so maybe that would have changed things -- XCode has some interesting features that appear to be turned off by default).  Once you've managed to write your Objective-C code correctly, you go through the standard "compile and run" cycle.  Debugging is also a challenge, but if you're familiar with gcc/dbg, you should be somewhat comfortable.

 

My Final Thoughts

 

Apple has a nice hit here with the Mini.  It's definitely lowered the bar for people wanting to bring a Mac into their lives, and it boggles me why PC manufacturers can't offer something in as small of a form factor as Apple has done.  For a non-gaming Mac user experience, the Mini delivers in a nice package.  For a developer experience though, the Apple developer tools have a long way to go.

3/17/2005 2:22:20 PM (Pacific Daylight Time, UTC-07:00)  #    Comments [2]  |  Trackback
Sunday, March 06, 2005

Some of you remember a post I had made in late September about my climb up Tiger Mountain.  I decided to