Wednesday, June 28, 2006

Cruise Control.net update

I have decided to disable cc.net. There isn’t anything wrong with cc.net, and I still think it’s a great tool for teams larger than one person.

The usefulness, however, for a single dev shop is limited, at best. I have spent over 10 hours working on cc.net, to get it all set up and running. All this so that I can know what I already did know: whether or not the build is broken. Since I don’t check in unless the build is working, there’s very little value added by cc.net.

Add to that the complexity inherent in keeping two machines configured with all of the tools and such that I use during the build process, and the costs greatly outweigh the benefits.

My plan is to leave the server installed, and the config files intact, so it should be an easy matter to re-enable it in the future, if I want to. If I do get involved in any multi-dev projects, I will certainly push to use cc.net. I will probably try to write a better application to monitor the build, though. The cc.net tray application takes like 60 seconds to start up.

Great Customer Service Experience

Today, a single employee at a huge corporation retained my business by great customer service. Any of you that have been near me during or after a retail experience in the last few years have heard my opinion of the general state of the customer service industry.

Courtney and I decided to go with Washington Mutual for our bank here. I opened us an account over a month ago. As of this morning, I still didn’t have a working ATM card or checks. I ordered both in mid May. Needless to say, I was very frustrated.

Today, I went to a branch, to get the ATM card straightened out, and see what was going on with the checks I ordered. If I heard “no” or “we can’t do that”, I was going to close my account, and walk across the street to First Technical Credit Union.

The teller, Ashley, did such a good job of addressing my concerns, and taking care of my needs, that before I left I grabbed the branch manager, and told him how I felt walking in, and that Ashley had singly-handedly saved my business. Ashley seemed to be a youngun, and was somewhat embarrassed when I grabbed her manager, and sang her praises in front of her. Sorry for that, Ashley.

If there is anyone who works for Washington Mutual that reads this blog, Ashley at the Overlake Financial Center in Bellevue, WA is the kind of employee that you should want to stick around in your company, and promote into a position where she can positively affect more customers’ views of the bank. If anyone else is in the financial industry, you might want to drop by and see if you can steal her away from WaMu.

Courtney can tell you how big of a deal it is that I even remember this girl’s name. I am horrible with names, so the fact that I can still remember it hours later should be an indicator of what a good job she did.

Tuesday, June 20, 2006

Live Messenger

The new version of Live Messenger is out. If you guys are still using an old version of MSN Messenger, or using the beta of Windows Live Messenger, I’d recommend upgrading. I love the new features in the Live version.

Here’s the link: http://get.live.com/messenger/overview

SpaceRocks! update (finally)

Tonight, I finally had the energy to work on my computer some at home. And, since the beta build of Flight Simulator X kept dying on me before I could take off, I decided to do some code work.

A while back, I finally got around to converting the SpaceRocks! code to use a high performance timer (the one included with the DirectX SDK, slightly modified), instead of just using a simple frame counter.

This is a Good Thing™. And a difficult thing. In game programming (at least my game programming), I have found the need for several constants. I originally tweaked these constants to get decent playability (like in version 0.0.8). After switching to the high perf timer, I had to re-tweak nearly every constant. So, that’s what I’ve been doing for the last few coding sessions.

In addition to tweaking the game settings, to achieve some measure of playability, I also tweaked the particle code. Finally, I am fairly happy with the particles, and how they behave. That was much more of a frustration than I thought it would. Over time, I will continue to play with the particles. Specifically, I plan to change them so they attenuate over time, and I am going to randomize the colors somewhat. I’m planning on specifying a base color, and creating particles whose colors are close to that base, but not exact, with probably a few white ones thrown in for fun.

Lots of good stuff, for a couple of hours worth of work.

Oh yeah, cruisecontrol.net is working just fine. I was having more source control issues, but they seem to have cleared up (magically). Actually, now that I think about it, the computer was rebooted due to a power outage. I bet that cleared some cache somewhere. I had been making changes to the config file, and relying on the service being restarted to apply the changes. I wonder if the hard reboot forced some changes to be applied that were being cached before.

It’s actually building right now, as I type this. Beautiful, isn’t it?

Question for Eric Sink: Do I need to purchase a seperate Vault license for the cc.net service?

Wednesday, June 14, 2006

More Microsoft goodies

In addition to my work on Flight Sim, and my start at helping on Wix, I answered a survey targeted at independent/hobbyist game developers. Once the survey master found out I was coming to MS, she got me all set up.

I attended a round table about the new XNA Framework that MS is going to release. I had heard of XNA before, but the marketing blurbs I had read didn’t really explain how XNA was going to help small shops like me. Well, I know better now. I can’t say much since it’s all MS Confidential for now, but there’s going to be a big announcement soon.

After the round table, I was contacted by one of the SDEs on the team, to get my input on starter kits for the project. How cool is that? I’m helping shape future indie game dev tools; not to mention making great contacts on the team, in case I need any special help down the road.

There’s going to be a game conference here in Seattle, Microsoft GameFest. The XNA team is trying to hook us(those that are participating in the discussions about XNA) up with regards to the conference fee. I’ll be going, and if any of you are going to be in the Seattle area, I’d suggest you go as well. There are going to be some big announcements coming.

Here’s the list of study tracks from the site:

  • Graphics
  • Audio
  • Systems – Windows and Xbox
  • Visual Arts
  • Cross-Platform Xbox Live
  • XNA, Visual Studio & Developer Tools
  • Casual Games
  • Middleware
  • Publisher and Business
  • QA and Certification
  • Hands-on Workshops

Quite a list, eh?

Immortalized

I have been immortalized.

The number of perks that come with working for Microsoft are amazing. I found out that we are currently building the next Flight Simulator, and that employees are encouraged to become play testers.

Being a huge Flight Sim fan, I signed up right away. One of the guys on the team (an audio engineer) sent out an email request for people to come in and be recorded for the game. They are trying to get some diversity in the in-game voices.

I volunteered immediately, and was chosen. Somehow, somewhere in the next version of Flight Sim, you will be able to hear my voice. The audio engineer working on the project is going to send us all an email telling us exactly what has to happen to be able to hear ourselves in the game. Once I get that email, I’ll post it, so you can all hear me in the game, too. I’m also going to try to get permission to post the .wav files once they are all edited and such.

Coolest job ever.

Happy Father’s Day to me

It’s not even Father’s Day yet, and I’ve already had a great day.

As most of you know, Courtney’s parents were in town for the last week. Today, they wanted to go to the company store, and get some software using my allowance. They got a ton of stuff. The coolest part is that they bought me the Bluetooth keyboard and mouse set that I have wanted for a couple of years now.

It took a bit of doing (meaning reading the directions) to get the keyboard and mouse hooked up, but they’re ready to go now.

While at the company store, Mike & Mindy also got some accessories for the Xbox 360 that Mindy was planning to buy Mike. We can’t get the systems at the store, but we can get MS games and controllers and other accessories way cheap. They got three games, and three controllers.

Then, Courtney did it again. She totally surprised me. I was upstairs, messing with my new keyboard and mouse, and she calls up to ask me to bring her down a quilt. I go in the closet, and grab the quilt for her, and notice this cool, white box, with green stripes. At first, I was like “oh crap. I did it again. I ruined another surprise”. Then it hit me that she sent me into the closet, and I realized that Xbox was probably for me!

Turns out, all the stuff Mike & Mindy bought was just to throw me off the scent, so I wouldn’t figure out that Re was getting me the 360. I had no clue, as always.

My wife is truly amazing. Every time I think she’s done everything cool that a wife can do, she goes and surprises me again. I certainly don’t have to worry about being bored when she is around. Sometimes I feel like I ought to be checking the closets every day, to see if there are any gifts laying around.

I sure hope she never decides to cheat on me (which she wouldn’t, of course). If she ever started sneaking around on me, I’d have absolutely no clue. That girl is sneaky, I tell you.

Thank you honey. Once again, you have made a good holiday great!

Tuesday, June 13, 2006

The best software feature ever

I just read an article about the best software feature that has ever been created. Now, the author didn’t put it in those terms, but I am. This feature has been a long time coming.

Do you know someone who thinks that there blog is all about what goes on over their? Don’t you hate those kind of errors? The ones that people never fix, because Office doesn’t flag the word as misspelled, and they are too illiterate to learn the rules around when to use there or their?

Office 2007 to the rescue! Read this entry: http://blogs.msdn.com/jensenh/archive/2006/06/13/629124.aspx

Friday, June 09, 2006

Who’s a punk now?

A few days ago, one of my ‘friends’ put a comment on this blog calling me a punk. I’d like to respond.

First, some background on the perpetrator.

  1. He’s old. Really old. Over 30 old. He tries to hang out with younger guys, to look hip and cool, and it’s just sad.
  2. He blow-dries his hair. How much more of a woman can you be?
  3. He rides a bike. It’s a sissy blue bike, but it’s still a bike. If you can’t ride a raven R6, then an older, not as fast, no inverted fork blue R6 is probably the next best thing.

What’s the purpose of this post? Just a little rubbing in. You see, I’m way cooler than he is. Here’s why:

  1. My bike is black, and has inverted forks, and is faster. At least .1 seconds faster in the ¼ mile.
  2. I don’t blow dry my hair. I never have. Ever.
  3. There are mountains all around me. There is a crazy steep, twisty road right near our temporary housing, and a whole range of mountain roads about an hour away.
  4. There is a motorcycle road racing track
    35 miles from my house.
  5. On July 15th, I am going to a free
    track day at the aforementioned track. I don’t have to buy any new gear, and I don’t have to do anything to my bike except fold back the mirrors. I get two 20 minute lap sessions in the morning, to see how much I love riding on a track.

Eat that, sucker.

Wednesday, June 07, 2006

One other thing

I spent some time today unpacking boxes in the office. I got all of them unpacked, except for books and games. We’re going to go through our books again, and sell/donate a bunch more of them. We have like 10 boxes of books, still. That’s after purging a whole bunch of books, and selling them at a second hand book store. We sold so many books, we made over $250 (at about $0.75 each). That’s a lot of books.

I’ve decided that I am going to get rid of almost all of my non-technical books. I’ve found that the books I kept last time are such favorites that I don’t read them anymore. There are about 20 books that I can read in just 3 or 4 hours, since I know the stories so well. I find that I’m basically skimming them, and relying on my memory to fill in the storyline. Seems kind of pointless to keep moving them around the country, when I could just think about them for a couple of hours, and get the same result.

I will, of course, be keeping the Corps series by W.E.B. Griffin, though. That is a requirement for all jarheads. Actually, I’m a big fan of all of his books.

Cruise Control .Net working

I got cc.net up and working. After fixing the way the service logs on, the vault task was failing again. This was caused by my installation path containing spaces (like “Program Files”). I fixed it rather easily; the fix came from dealing with the same type of issues using command line applications. I surrounded the path to the vault executable with quotes. That took care of the failing source control tasks.

After that, I had to install NUnit on my server, to build the test project. Because I haven’t developed on that box since the last rebuild, I was missing some required components (NUnit, DirectX SDK, etc). Those are all installed now, and my cc tray utility shows green (meaning the projects are building properly). Next up is to integrate NUnit into the cc.net build, so it automatically runs the NUnit tests, and then NCover, so I get a code coverage report with every build. This stuff is way cool.

Who needs it?

Tonight, rather than sleep, I have been working on getting continuous integration set up in my personal development environment.

What is continuous integration, you ask? I’ll tell you. Basically, CI is the process by which every time code is changed in the repository, a build is kicked off, and the results of the build are displayed for all to see. A repository is the place where good developers(Eric’s thoughts, Joel’s thoughts) store their source code, and provides many benefits. Check out Eric Sink’s articles on source control for more information.

This task was not as simple as I thought it would be. I’m monitoring two projects (SpaceRocks! and my ‘engine’) with my CI server. I chose CruiseControl.NET for my CI server. Download the really small installer, and it’s ready to go in minutes. Of course, then you have to configure the projects.

I ran into a couple of gotchas, mostly around using cc.net and Vault (still the best source control system for smaller shops ever built). The biggest one is that the cc.net service has to run as a user account (not the system account), in order for the Vault tasks to work. I had to look for a long time to find the problem. The looking time was compounded by the fact that the cc.net error message was less than informative.

Second, I ran into a couple of minor issues using cc.net and MSBuild. Recently, I converted SpaceRocks! and the supporting projects into C# 2.0, so I could use the new features of the language, and of VS 2005.

Once I got those two things worked out, I was ready to roll. Of course, the build was still failing, since I hadn’t ever built the project on the server machine before (I do all my dev work on laptops and on my main desktop). I need the DirectX SDK before I can build successfully (which I’m downloading now).

Next, I’m going to spend some time in the code getting the unit tests working again, and I’m going to start working towards increasing my code coverage. I had let my tests slack off, since I was on such a roll with the game. I’m ahead of schedule, and feeling guilty about not having more tests in the code.

Monday, June 05, 2006

Quiet

Courtney and I moved into our semi-permanent housing Friday. This caused an outage of internet proportions, so we can't post from home. Thus, the lack of any updates for the last few days. We'll be posting again after tomorrow, when the internet gets hooked up.