Managed World

Techno-babble from yet another babbler RSS 2.0
# Friday, June 30, 2006

In the past I've had definite self-confidence issues. Heck, I still have self-confidence issues that I privately fight with. Recently, I came across something that touched a bit close to home and really resonated with me. Funny enough, I actually came across this when watching the movie "Akeelah And The Bee" with my wife (which I found to be a surprisingly cute movie (despite what "movie critics" might have said (I'll save that rant for another time))).

While interviewing at Microsoft, I found myself repeating sections of this to myself over and over. It has definitely helped me along when I start to fight self-confidence issues. I'd imagine there are others out there that fight with the same kind of mental issues. For those of you who do, I would like to share this passage by Nelson Mandela and Marriane Williamson:

What We Fear the Most

Our deepest fear is not that we are inadequate,

Our deepest fear is that we are powerful beyond measure,

It is our light not darkness that most frightens us,

We ask ourselves, who am I to be brilliant, gorgeous, talented and fabulous?

Actually, who are you not to be?

You are a child of God.

Your playing small doesn’t serve the world.

There’s nothing enlightened about shrinking so that other people won’t feel insecure around you.

We were born to make manifest the glory of God that is within us.

It’s not just in some of us; it’s in everyone.

And as we let our own light shine, we unconsciously give other people permission to do the same.

As we are liberated from our own fear; Our presence automatically liberates others.

by Nelson Mandela and Marriane Williamson

Posted in Personal
 #       Comments [0]
# Thursday, June 29, 2006

I've had a random thought of an experiment/observation I want to make when I start at Microsoft.

Lately, I've seen a good number of commercials on this whole "People Ready" marketing theme by Microsoft. One of the commercials shows a "new guy" who just started at a company and what he is going through. The gist? To being able to empower your employees to excel as a company.

So, the observation I want to make? Well, with all the "People Ready" marketing, can Microsoft "walk the walk" and "talk the talk"? Stay tuned to see if they can!

Posted in Personal
 #       Comments [0]

I'm sure that many geeks remember the whole Sony Rootkit fiasco that happened not too long ago. I'm sure many people had the seem feeling that I did that it was not going to be the last time we heard about "rootkits" (and that we would probably be hearing even more about them in the future). The work that Mark Russinovich did during the Sony Rootkit debacle is stuff that I still look up to, in a big way. It was yet another data point that helped fuel my desire to learn the internals of Windows and to get a more solid understanding of how everything works.

Anyways, I digress as I'm being a bit tangential.

Some of the cool new features that are starting to pique my interest in Longhorn Server are the new hardware-based virtualization features that are being made possible by technologies like LaGrande (Intel) and Pacifica (AMD). These features could really start to help fuel the fight in IT departments around the industry to leverage virtualization packages to help control various operational costs. In my opinion, this is "A Good Thing." What's interesting though are the holes this technology might open up for various malware authors.

100% undetectable malware? According to this recent article, not only is it possible, but there is already an example out there showing how it can be done. I would be interested to see what some of the brain trust within Microsoft is thinking in regards to stopping these sort of attack vectors. Currently, Vista is set to release and be one of the most secure Windows OS's that we have ever seen. It would be unfortunate if all the work to harden the Windows Kernel would go to waste due to an open attack vector made possible by the new virtualization technologies.

My worry? If not careful, this could undermine the work that is being done to secure Vista in the eyes of the customers. I remember seeing in a previous article or two that there is a "Anti-Malware Technology Team" at Microsoft. I would have to imagine (or perhaps "radically hope" depending on your optimism or pessimism) that this team at Microsoft has started to think about this problem (and hopefully work on it).

Posted in Vista
 #       Comments [0]
# Tuesday, June 27, 2006

I'm proud to announce that I have received my sticker from Jeff in the mail :). The update? My laptop is now fully pimp-ified. Behold my laptop in all its newfound glory:

Posted in Personal
 #       Comments [0]

When looking back on the last two weeks, I'm still in disbelief that the process of getting a job at Microsoft passed so quickly. I believe the amount of time that expired from being contacted by the recruiter (Hello Steph :D) to getting an offer was less than two weeks. For me, this is all the more impressive with how big of a company Microsoft is.

I almost don't want to be making this post as I'm still going through the process of Microsoft performing a background check. I keep having this nagging feeling that I'll get an email from Microsoft saying "We're sorry, we meant to extend the offer to Jason Golson, not Jason Olson, sorry for the confusion" or something crazy like that. Granted, I'm hopeful that the chances of this happening are nil but it still seems almost too good to be true. In some ways, I can't believe this is happening to me. In other ways, I'm very excited as I think I'll make a great Technical Evangelist.

So, how was this whole experience with Microsoft? So far, it has been rather painless and quite fun actually (and I, for one, hope this trend continues). I suppose that this time around (I had interviewed with Microsoft before my current job), I knew what to expect so I was not taken by surprise by anything. Once I got over the "performance jitters" before the first interview (actually, _during_ the first interview I suppose), it was quite easy to be myself and to just enjoy all the conversations that I had the pleasure of having that day.

I would like to take this opportunity though to talk about what it was like being recruited by Microsoft (if you would like Microsoft Interview advice, just search on "Microsoft Interview" on the search engine of your choice (dare I admit that mine has been Google?!?) and you will find a plethora of information out there).

Two weeks ago or so (at the time of this writing at least), I was contacted by Steph Coleman at Microsoft asking if I was interested in interviewing for a Technical Evangelist position that was open at the company. Being a person who has started to prefer to take advantage of the opportunities I get, I was (of course) interested in interviewing for the position (I mean, come on! It's a Technical Evangelist position :D).

You see, I was not actively looking for another job. I was happy at Fios, Inc. I was what some recruiters would call a "passive candidate/lead" (check out these two posts from Gretchen back from 2004 on the "JobsBlog"). Interestingly enough, in one of those posts, Gretchen says "Recruiting the passive candidate is where we prove our worth and doing it well is what separates the great recruiters from the pack.". If that is the case, I happen to think Steph is a great recruiter. All in all, she is making this entire process quite painless for me and my wife.

When contacted by Steph, I loved the idea that there was a chance for me to get a Technical Evangelist position. Needless to say, there was no way I was going to pass up that opportunity. So then the interview loop started. It was what you would expect: phone screening with the Recruiter, technical screening with another person (this time, the Director), in-person interviews, status report afterward. Sometimes people don't make it through some of these steps. To those people, I say "stick in there, hopefully you'll get your dream position some day."

Like I mentioned before, I was pleasantly surprised how quick this whole process moved. I believe it was Wednesday that I had talked with Steph. The next day I discussed the position with Neil Hutson (the Director). On Friday (the day after that), Steph was able to put together a trip for me up to Redmond (with only two business days of warning). The following Wednesday I flew up, met with Steph, discussed what to expect, and the day started. In total (including Steph), I believe I interviewed/chatted/discussed with seven different people. My original schedule only had five scheduled, so I felt better that two extra were scheduled (my first time (for an SDET position), I only made it through four). Two days later (less than two weeks since the first email from Steph) I was extended an offer for the position.

As I've already used the word many times before, the single word that best describes my whole experience is "painless." We'll see if that is still the case after having to sell my house and relocate up to Redmond. Man, even if it isn't, once it is over, I'm so excited that I'll be working on campus (yup, relocation is NO problem for me).

After reflecting on my entire Microsoft experience this time around, I believe I could sum it up with one key piece of advice for any candidates out there: Be Yourself! You have to remember that you're interviewing with very smart people. If you don't know something, trust me, they'll find that out pretty quickly. Don't even kid yourself that you'll be able to B.S. your way through anything. Be willing to admit "I don't know" because sometimes they only want to see if you have the aptitude to _learn_. After all, anyone can memorize useless facts from a book. The key? Do you really _understand_ what you are learning. If you don't know something before your screening with the Recruiter/Hiring Manager, there is probably no way you are going to be able to do the "mid-term cram" act and pass yourself off as having deep knowledge of that subject. With all that said, Be Yourself! They want to know You! In the long run, you'll be harming yourself if you manage to get a job by not being yourself as the real you may not actually be interested in that job.

If I get the time to do so, you may hear more from me on my continuing adventures on getting hired by Microsoft. Until then, my friend, that's how the cookie crumbles!

On a side note, one of the questions I found interesting in my first screening (albeit applicable to the job in question), was that I was asked whether I had a blog or not. Sometimes I'm amazed at how far blogging has come. Now Microsoft is even asking the question in screenings for Evangelist positions? Cool. But that's neither here nor there.

Posted in Personal
 #       Comments [0]
# Friday, June 23, 2006

I can now finally blog the big news that I've been _dying_ to share with everyone. I'm proud to announce that I will soon officially become a Microsoft employee. I have accepted an offer to be a Technical Evangelist on the Developer and Platform Evangelism Team working with Longhorn Server. That's right, baby! Technical Evangelist!!! I'm really looking forward to the challenge, the never-stop-learning experience, and everything else about the position.

I feel so lucky that I will be getting the opportunity to work with amazingly smart people such as (in no special order): Vitorrio Bertocci, Volker Will, James Conard, Matthew Winkler, and Neil Hutson (the ones I met during my interview loop).

I would like to send out a thank you to Steve Cellini for giving me my final interview and providing me with some more insight into what the purpose of Evangelism is.

I also would be remiss to not send a "shout out" to Steph Coleman, the recruiter who recruited me in the first place, and without whom this would not be happening to me at this time :). I will be creating a new post detailing my recruiting experience and how the whole process went (so stay tuned).

So, thank all of you for the opportunity and I look forward to working with all of you!

Posted in Personal
 #       Comments [8]
# Tuesday, June 20, 2006

Holy Moly! Could Microsoft release fewer cool products for a while please? :). There has been so many exciting technologies coming out lately that it seems like there is hardly enough time to investigate them all. The latest edition to this group of great technologies? Microsoft Robotics Studio.

There are a few things that excite me about this specific technology (from what limited investigation I have done on it during my lunch break today):

1) It is enabled for both Visual Studio _and_ the Express products (you can even use it from IronPython).

2) Robotic simulation. If you don't have the hardware to play around with it, Microsoft Robotics Studio includes robot simulation using DirectX that you can use to programatically build a robot and show how your "software" would work with the robot. I'm slightly jealous because this was one of the ideas I had behind my next game (take this Studio and make a "battle game" around it, and that was Tanks).

So, I obviously need to play around with this some more. Perhaps I'll still build Tanks now that a good amount of the "leg work" has been done for me through Microsoft Robotics Studio. I'm wondering since Robotics Studio has its own runtime and such, if I can embed that runtime within a game so that I can build a game around it. Heck, that sounds like a fun project as a matter of fact. Perhaps I've found my next endeavor after Spaceballs is finished.

Enjoy! 

 #       Comments [0]
# Monday, June 19, 2006

As you readers out there may or may not know, I'm a fan of all things games. Heck, you could probably sell me a hunk of plastic if you were able to somehow convince me that it was in fact a game (double-whammy if you were able to convince that it was somehow a football game). This piece of news might help explain why such a little piece of sweet Vista toast can make my evening (although, I must admit, it may have been more "balloon" than it was "toast").

I was in the process of installing Visual Studio 2005 into my VM of Vista Beta 2 this evening when a little nugget popped up to say hello. As Visual Studio was installing, I turned on my XBox 360 to do, well, what we XBox 360 owners do of course (disclaimer: if you do not presently own, or have never owned an XBox 360, it is strongly encouraged that you "waddle right out" and purchase one, post haste [ED: I added the phrase "waddle right out" since the legalese that my "lawyer" (aka "Hugsy, the Bed Time Penguin Pal") came up with was rather drab and boring]).

When the 360's beautiful, glorious, green light came to life and lighted up my life, Vista gave me a little surprise as well. It appears that Vista and the 360 are in fact long lost friends and, to my surprise, Vista shouted with joy when they were finally re-united again. Stargate (aka my Vista box (hey, I've never claimed *not* to be a geek you know)) informed me that not only did he know my 360, but that he would be more than happy to share all his possessions with the 360. The price? Only a few clicks. Heck, that's a price I'm more than willing to pay. After a couple clicks here and there, my Vista machine was ready to share media with my 360 and be inaugurated into our big, happy family. Slap me silly and call me "Mr. Fan-Of-Interconnected-Devices-Who-Are-Easy-To-Setup-And-Share-And-Party-With."

I haven't dug into the depth of this sharing experience yet, but you can bet your bottom dollar that I will start playing around with it this weekend. I'm sorry for such an "over the top" post, but I get so excited when I encounter technology that makes my life better and makes the geek in me cry with joy (and for those who know me, you know I'm large enough to *literally* have an entire geek within me to begin with (dare I say that I, indeed, may actually have a living and breathing geek within my bell-eh (it would certainly explain all the muffled shouting I hear from time to time))).

If only all things in my life could be so easy...

Note: I know that a good amount of this type of functionality is available with Media Center Edition, but alas, I do not have that and this is my first "media sharing" experience with the XBox

Posted in Vista
 #       Comments [0]
I'm just registering this blog with Technorati. Nothing to see here, move along children....

Technorati Profile
Posted in Personal
 #       Comments [0]
# Friday, June 16, 2006

I'm going to warn all of you out there now: I'm about to break down the walls and get honest about some of my feelings. If all you want to hear about are unicorns, pretty pink bunnies, and how cuddly-wuddly the whole world is, I encourage you to leave now. No group hugs here. No kumbaiya here. No other camp songs either, for that matter. With that said, let's now move on to the real "schtuff", shall we?

I would like to talk a little bit about the decision to rename WinFX to .NET Framework 3.0. Do I agree with the re-branding of WinFX to .NET Framework? Absolutely. I believe it does communicate the fact that the various WinFX technologies are a _part_ of the Framework now and it will lead to less confusion in the long run. It is now clear that the various WinFX technologies are part of the core platform and, in my mind, that is "A Good Thing."

So, if I am behind the re-branding, what is my problem? Well, my problem is three simple syllables: "three point oh". I can see more confusion being caused by using the 3.0 label for this "version" of the framework in the long run. What does .NET Framework 3.0 have to do with C# 3.0 or the 3.0 runtime? Nothing. What version of the runtime is packaged with .NET Framework 3.0? 2.0. Are there any breaking changes between .NET Framework 2.0 and 3.0? Nope. Why? Because the .NET Framework 3.0 uses the 2.0 runtime. Huh? You mean there's no breaking changes even with the major rev of the Framework? No, because they are the same runtime under the hood.

For me, it is slightly reminiscent of the naming mess Sun is in with Java. After all, you have J2EE (Java2) 5.0 (which actually uses version 1.5 of the Java language). It's disappointing as Microsoft had done relatively with with 1.0, 1.1, and 2.0. So, what are the other options?

One option is .NET Framework 2.1. To me, this option is only slightly better than 3.0. True, people won't think of breaking changes taking place. However, this still suffers from the fact that the Framework version is different than the runtime version (and hence, leading to some of the same confusion). Cross this off the list.

Another option is .NET Framework 2.0, Service Pack 1. With this option, the framework version is the same as the runtime version, so that confusion is alleviated. With a "Service Pack", it is not clear that there are a bunch of new features with it though. At least, not by definition it's not. However, isn't this what Microsoft basically did Windows XP, Service Pack 2?  I still think there would problems convincing marketing to go with this title as I think it would be more difficult to "sell" this to customers. I'm not in marketing though, so I could be way off on this one :). This is probably the one that I like out of the other options (including ones that other people have posted about).

So what will I personally do about this? I guess I'll just sit back and accept it (with a frown). Overall, I believe it is perhaps the lesser of all evils once the decision was made to integrate it into the .NET Framework "product". At times like this, there is one word that comes to mind: Unfortunate!

Disclaimer: as usual, this is just one man's opinion and yours might differ.

Posted in Rants
 #       Comments [2]

That's right, it's about that time again: time to share what books you are reading right now. Here is the list currently on my night stand / in my computer bag:

- Operating Systems: Design and Implementation, Tanenbaum / Woodhull

- Microsoft Windows Internals, Fourth Edition, Russinovich / Solomon

- Programming Pearls, Second Edition, Bentley

As you can see, I'm focusing on some more low-level type stuff. Why? Because it's intriguing and fun, that's why :P.

So, what's on your reading list right now?

Posted in Personal
 #       Comments [0]
# Tuesday, June 13, 2006

I was asked recently what excited me most about the various Vista technologies. While I took a valiant stab at limiting my answer down to a handful of them, the proper answer with the way I feel would have been "what _doesn't_ excite me about the various Vista technologies." Yes, I could get into the various aspects that excite me about Workflow Foundation, Presentation Foundation, and/or Communication Foundation. I will save that for a later blog post though. Save to say, I'm extremely stoked right now about doing some development with all the different Foundation technologies. I think I'm going to do some deep-diving into Workflow Foundation for a while though :).

So, after a hiatus for almost a year (has it really been that long?), I will be spending time again getting into the various Vista technologies that are coming our way. So stay tuned in the future for more Vista updates :).

Posted in Vista
 #       Comments [0]
# Thursday, June 08, 2006

I know I was shooting to get the lives system implemented last night, but I wasn't able to do so because I needed to fill out a bunch of paperwork and do some general catch up on some other tasks (non game-development related, that is). So tonight was my first opportunity to work on Spaceballs since Tuesday night.

I'm proud to say that not only did I get done what I was shooting for (multiple lives for the player as well as the "Get Ready, Set, Go!" countdown at the beginning), I also got done a lot more. I love the feeling of being very productive because the architecture and framework just enables you to be productive :). With the way I had implemented my state management (combined with existence of my new Task Manager), I was able to finish the GameOverState as well as add a death animation for when the player dies. I also added a bunch of prompts throughout play and stuff. What a great feeling!

Now with lives, respawning, death, death animation, game over, etc. all implemented, the functionality and flow of the gameplay is _literally_ feature complete now (must haves + nice to haves). Now I can move on to adding the new enemies, power ups, and such (read: all the fun stuff). I find myself getting more and more confident with each coding session (of getting something fun and complete done by the deadline, not of winning (especially with all the other fun games being done)).

I do have some cleanup left to do after tonight's coding session. This just involves creating a quick UI component that can be re-shared between the various GameStates I have for the Scoreboard area (Score + Lives + Prompt/Possible Message To User). That should take almost no time at all. Perhaps after that I will do a release of the binaries and source for all of you to download (maybe tomorrow night?). Regardless, sharing code and binaries is very easy for me since I have a script that automates the cleanup of the source code, generation of release notes, and creation of the zip files for me.

Once I'm able to do that, I'm hoping that starting tomorrow night and ending sometime Saturday, I can create and finish a HomingSpaceball (charges after the ship wherever you go) and a WanderingSpaceball (moves in random directions). If I'm able to get those done, I would like to extend the HomingSpaceball to break up into four smaller spaceballs when it is destroyed. That should add some more fun to the game.

Now, in the miraculous case that I'm able to get all that done this weekend, I will move on to adding a new weapon (which will require me to finally create a new Weapon class and change my firing mechanism around a bit (once again, shouldn't take that long)) that you will automatically upgrade to at 10k points. When that is finished, the next step will be adding bombs to the player's arsenal that will destroy all spaceballs that are in play when it is dropped. Holy cow, if I could get all that done (even by next Tuesday or Wednesday), I would _REALLY_ be cooking along toward my goal. Perhaps then I could start doing some play testing.

Until next time, that's how the cookie crumbles :).

 #       Comments [0]

OgreDotNet was recently pointed out to me by a friend and co-worker. I don't know have I missed it in the past, but I see it's there now which is the important part :). With the lack of mature, open-source 3d graphics engines for managed code out there right now*, I'm glad to see this come to fruition.

Since Ogre3d is already object-oriented, you can't tell from the code of OgreDotNet that it is simply a set of bindings down into the C++ libraries of Ogre3d :). Not only that, but it appears the forum is fairly active and alive (and that's the OgreDotNet forum I'm talking about (since the regular ol' Ogre forum is _very_ much alive)).

In the future (aka after I finish Spaceballs and perhaps another game or two), I will probably end up using this for my first 3d game I do (and possibly all the other 3d games I do after that). I really want to just break down and start playing around with it now, but I'm sure my competition in this contest would like for me to do exactly that. SOOOO, perhaps once Spaceballs is finished I can start playing around OgreDotNet.

Until then, make sure you check it out :).

http://www.ogre3d.org/wiki/index.php/OgreDotNet

* Axiom priorly being sucked up into RealmForge (I know the source forge project has started up again, but it _just_ started up again seriously, in my opinion), RealmForge now being "deprecated" of sorts, and the other options like Irrlicht.NET and Haddd not being as mature and supported as Ogre (again, just my opinion)

 #       Comments [0]
# Tuesday, June 06, 2006

I didn't quite get around to implementing the lives functionality tonight. However, I did do some general cleanup and "paved the road" for me to easily drop in the code for respawning and multiple lives tomorrow.

One of the refactorings I did was to take what I was calling "States" before and change them to "Screens". Really, they were screens. As I needed to start adding states to the gameplay itself (like PlayingState, LostLifeState, etc.), I didn't want to go down the road of making a hierarchical state manager because I felt it would muddle up what was really being done under the hood. I felt that separating out Screens from States would lead to a much more clean implementation.

Rather than states being things like MenuState, PlayState, RecapState, and HighScoreState, those are now MenuScreen, PlayScreen, RecapScreen, and HighScoreScreen. In my mind, that makes it much more clear what they are actually doing. States are now concepts like ReadyToPlayState, PlayingState, LostLifeState, PowerUpState, GameOverState, etc. Once again, I am happy about this change as I am really liking the separation between "Screens" and "States" rather than hacking both concepts into one. The code is not only cleaner, but it will also be much more clear where the functionality I'm about to implement goes. For instance, the multiple lives functionality will simply be transitions from PlayingState to LostLifeState and back to PlayingState. If I add the "countdown" at the beginning of the game (think "Starting in 3... 2... 1.... GO!"), it will simply be starting with ReadyToPlayState and transitioning to PlayingState when appropriate. This will also help break out the code into more manageable chunks as well (which I always like).

On an aside, I think I use Source Control much more than I originally thought. It's only day 20, and I'm already up to revision 61 in SVN (61 commits). Better safe than sorry, I suppose :).

I still don't have any comments to make on Visual C# Express. I still haven't really noticed the difference all that much for my hobbyist development. Anyone out there that wants to get into C# development should _totally_ download Visual C# Express and use that. Besides, you can't beat the price of FREE :). The one thing that I can say is that, in my opinion, the Express products are better than the other free IDEs that are out there today. Usually, you get what you pay for (meaning free can suck tremendously), but not with the Express editions.

That's it for this update. For tomorrow night, I'm going to shoot for implementing multiple lives (a.k.a. LostLifeState) and hopefully get around to implementing the ReadyToPlayState as well to add the countdown to play time. Those shouldn't take too long (hence the reason I'm hoping I can get both of them done tomorrow night). Until then, I'll see you on the flip side :).

 #       Comments [2]
# Monday, June 05, 2006

Not much functionality change tonight. Nope, tonight was mostly bug squashing night.

The first bug I squashed was around spawn point generation. Sometimes, a spawn point would be generated that would cause a Spaceball to be spawned within a wall. This was due to the spawn point generation algorithm not taking into account the size of the entity is was generating a spawn point for. That was an easy fix :).

The next bug I squashed was around the ball-reflection logic I had to bounce Spaceballs off of the walls when they hit. Unfortunately, it didn't take into account whether the code had already flipped the velocity vector based on a prior collision with the wall (i.e. a collision from the frame before (meaning, it is _still_ stuck in the same wall since not enough time has passed to clear the wall)). This was causing Spaceballs to become "caught" in a wall or to pass right through it. This was also an easy fix. I basically added logic to not only check for the collision, but to also check whether the Spaceball was still headed in the "wrong" direction before correcting its velocity.

The last thing I implemented was more around missing code. When implementing the game loop originally, I had forgot to add the ability for a game to be "paused". This meant that if the form lost focus (like navigating away to a different window), that the game would still run in the background. Oops :). That was also an easy fix, so it behaves properly.

Fixing the game pausing functionality exposed another bug, though (don't you love when that happens?). My EnemyEmitter class that was spawning new enemies on a frequent basis was checking a DateTime field from the last time it spawned to DateTime.Now to verify whether it needed to spawn a new enemy. This meant that the second a new enemy was spawned, I could make the window lose focus, wait several seconds, give the window focus again and a new enemy was spawned right away. Bad Jason! I should know not to check against *real world* elapsed time. I changed the code to record how much time had elapsed *in game* since the last spawn (by adding up the elapsed time through each "Update" call to the Emitter) and Poof! Bug fixed :). Once again, easy fix.

That's about it for tonight. Hopefully tomorrow night I can implement the lives system (i.e. giving you three lives rather than the game being over the first time you get hit). I was really hoping to do that tonight, but I guess it just wasn't in the cards :). Once I do that (which will include some refactoring to add "spawning" of ships themselves and fixing an annoying spawning issue I currently have), I will truly move on to implementing some of the various other Spaceballs I have in mind. Then the true fun begins (not that it hasn't been fun up to this point :)).

 #       Comments [0]
# Sunday, June 04, 2006

Well, I was able to squeeze in _some_ coding time last night and this morning. The update to Managed DirectX is all finished. It's kind of nice to see FPS should up from 90 fps to around 550 :).

All in all, it took about three hours to upgrade from GDI+ to Managed DirectX. Boy am I glad that I wrote the infrastructure the way I did. After a quick refactoring (making it so the IGraphicsService implementation rendered the Sprite rather than the Sprite itself), all I had to do was implement a new Direct3dGraphicsService and change the ServiceLocator to use an instance of that instead of the GdiGraphicsService it was using before. Viola! I'm now in Managed DirectX land. I love when to make a change like that, all you have to do is add another class rather than comprehensively changing your existing code.

Unfortunately, I'm still at the hotel in Seattle so I can't commit my changes to my Subversion repository yet (boy does that feel weird; I guess I'm used to committing often when I make small functional changes).

Now I believe I'm in a position to sustain for the long haul (as in, the system can grow to handle a particle engine and the like rather than having to find clever ways around the fact that GDI+ is not hardware accelerated).

So, what are the next steps?

1) Resolve a bug around Spaceball creation (sometimes the Spaceballs are created in the walls). This should be easy as it is simply limited the spawn area by the dimensions of the Spaceball being created.

2) Add "lives" to game. You will start out with three lives and the game will be over when you have no lives yet (currently, you only really have one life). I will probably re-implement my TaskMaster here to handle delayed spawning.

3) Create "invisible time" for two seconds when a new Spaceball is spawned. Currently, if a Spaceball just happens to spawn where you are: BLAMO! Game over. Just a little annoying, to say the least. I want to fix this.

Once those are done, I figure I will either "beautify" the Menu screen, or I will start adding in more enemies and gameplay mechanics (like Ship power-ups and such). Currently, I'm leaning towards adding some more gameplay mechanics as I would rather get those down and fleshed out before making the various screens look good (which I can always do at the end). Basically, I want to prevent myself from spending so much time make it look pretty that the gameplay suffers.

DirectX Rant #1 - The errors. They're horrible. If I accidentally try to Draw a Sprite before calling Begin(), please just tell me that "Begin must be called first" or something like that. Whoever thought that "<INSERT MAGIC NUMBER HERE> D3DERR_INVALIDCALL" is a useful error should be SHOT on sight.

Visual C# Express Thoughts - I agree with George, here. In this case, no news is good news. I work with Visual Studio at work and the fact is that I have hardly noticed that I'm _not_ working with it at home. The only difference for me is that I'm missing ReSharper, but that is _only_ because I've been too lazy to install it yet :). You gotta love a quality IDE that doesn't get in your way and has so much functionality to it!

 #       Comments [0]
# Friday, June 02, 2006

I was recently contacted by Allan Hoffman (the "tech jobs expert" for Monster.com) about some quick thoughts and tips I had on how to have a successful technical blog (which alone is a shock to me as I wouldn't even start to think of my blog as "successful", but to each his own I suppose :)). I thought I would reprint my response here (with permission, of course). I hope you enjoy :).

Obviously, these are just my opinions so you can take them with a grain of salt if you wish (at your own peril, I might add :P). Feel free to add your own as well. I know many of other more capable bloggers have already talked about this, so I'm merely sharing my own experiences as a blog reader myself.

--------

What are the ingredients for a good technical blog? In my opinion, the recipe is pretty simple: accurate technical information + personality + reliability (at least semi-frequent posts) = good technical blog. I have certainly suffered from time to time on the reliability aspect. And I believe that at certain points in the history of my blog, infrequent posting has actually caused me to lose readers. Personality is an aspect that I still am feeling my way through. At times I feel I become too personal and lack the amount of technical information that people desire. At other times, I had tried to be so technical that my personality had stopped showing through. It's definitely a balancing act.

Here are some quick tips that I could think of:

Tip A / B. Have Something To Say / Be Unique. It seems like nearly everyone has a blog these days. Even in the technical world there seems to be an over-abundance of blogs that exist now. There is an incredible amount of noise that exists that people have to sort through in order to get to the juicy stuff. Let's face it, you want to have one of the blogs that gets noticed. You don't want to simply be adding to the noise. In this vein, make sure that you have something to say. A quick way to get a reader to hit the "unsubscribe" button is to write many "check out this link" posts.  And whatever you do, don't simply post to apologize for not posting. With how much noise that exists out there in the "blogosphere", if you're not adding signal, you're out of my aggregator.

Another way to add signal? Be unique. Even if you're not always technical, there is a good reason that blogs like http://www.neopoleon.com are becoming extremely popular (dare I say, near cult-like). If you are unique, you give your readers the opportunity to look past some of your shortcomings (and face it, we all have them). Not only that, but maybe you'll make people laugh in the process (which is always a good thing in my book).

Tip C. Blog About Something You Enjoy. You have to enjoy what you are blogging about, it's as simple as that. If you don't, it will feel forced and your readers will notice. If you would like people to enjoy reading your blog, you should enjoy writing it! When reading blogs I believe people don't want to feel like they are reading a text book. Which leads to Tip D.

Tip D. Let Your Personality Show. One of the major advantages of blogs is that they can be a uniquely personal communication medium. When reading your blog, let people know who you are. I've noticed recently that the majority of blogs in my RSS aggregator are from people who let their personality show. I enjoy the fact that while reading a person's blog I get the unique opportunity of getting to know them a little bit. So, remember to be yourself while blogging.

Posted in Blog
 #       Comments [0]

I haven't done any coding recently as I've been getting ready for the gig I just had tonight in Seattle. I'm now checked in to the (crappy) hotel (the room is about as big as my left thigh). Luckily, they have wireless, so I'm able to at least give this update.

I realized yesterday that to take this game where I want to take it, I really need to upgrade to Managed DirectX to leverage the hardware acceleration (especially once I get into implementing my particle engine/system). So, as soon as I get back, I will be upgrading the game from GDI+ to Managed DirectX. Luckily, this conversion shouldn't take too long as I simply need to add a new Direct3dGraphicsService class and change my application to use that.

Actually, that's not entirely true. I also need to change some of my game logic. This is because GDI+ expects the origin to be in the upper left corner, while the way I will be setting up my camera in MDX will expect the origin to be in the _lower_ left corner. That should be pretty easy to fix though.

Perhaps if I really start using MDX, it will allow Andy to start giving some blogging love to it :) (don't forget Andy that George is also using Managed DirectX for the contest).

Anyways, back to reading the AI book I picked up the other day.

You may not get another Spaceballs update until Monday or Tuesday night. Sorry :).

 #       Comments [0]

Contact

Email Me Send mail to the author(s)

Calendar

<July 2008>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

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)