December 31, 2004

"Phantom Of The Opera" Mini-Review

I just got back from seeing "Andrew Lloyd Webber's 'The Phantom Of The Opera'" at the theater, and I must say that if you are a fan of the play or of the soundtrack, this is a must-see.

If I had to call out some deficiencies, I'd have to point out that the Phantom's singing voice is not as powerful as Crawford's, and that Christine's singing occasionally hits her notes a bit too high, although both of the complaints could be because of the sound system in the theater we were watching the movie in.

It's worth a full-price admission. I lucked out, though. When I was packing, I found some theater gift certificates that I received after shipping Links LS 2000.

Less Than PC

Many people who know me know that I'm...well...less than politically correct. I say what I mean, people's feelings be damned. It's cost me some opportunities in life, but I'd rather be real and be in a lower station than a fake in a higher station.

Anyway, I read a lot of online comic strips, about 130 to be exact. I was reading Chopping Block by Lee Adam Herold this morning (warning: comic not for children or impressionable adults), and caught his rant at the bottom of the comic. It rang true, so I thought I'd share it with you.

Can I just say that political correctness makes me want to vomit my guts right out into my lap?

As such, I'd like to say, "Merry Christmas", even though I'm a couple days late in posting it here. Not "Happy Holidays", not "Season's Greetings", not "Lovely Bright Wintertide". MERRY CHRISTMAS. What's that? You're not Christian? You don't celebrate Christmas? Well that just simply isn't the point. I am Christian, I do celebrate Christmas, and by wishing "Merry Christmas" to you, I'm not proselytizing, I'm not trying to force my beliefs on you, I'm not trying to belittle you or offend you or make you feel left out. I'm extending well wishes and a greeting based on my own beliefs to you, because--- brace yourself now---I actually CARE that you're doing well.

For the majority of the world, peoples' beliefs make up the very core of their beings. Faith, moral code, belief system, whatever you want to call it, it guides us and defines how we behave and, essentially, WHO WE ARE. By each sharing a little bit of that fundamental part of ourselves with another through a simple greeting or blessing or belief-based quotation, we honor that person. We're saying, "This is important to me, and through it, I want to wish you well."

But if the ACLU tells you that I'm trying to force my beliefs down your throat and you should be offended to a ghastly degree, then by all means take offense. Let's not share anything with each other, but instead keep our mouths shut and pretend that everyone is exactly the same, so that no one ever feels uncomfortable. Don't be yourself. Don't talk about what you believe. Don't wish anyone well and don't make any sudden movements.

And don't sneeze, because if you do I'm going to say, "God bless you." I'm insensitive to diversity.

I'm not Christian, but I believe everything he says here to be true. So in the spirit of the Holidays, I wish everyone the best. I also wish everyone would read the Chopping Block archives, even though the subject matter might offend a few people.

December 30, 2004


I used to think that nothing would piss me off more than spam. I was wrong.

Lately, I've been being inundated with "referral spam." Since Blogger is pretty good about keeping the comment spammers off, I've been okay with that, but I've been getting hammered with ads in my referral logs. Since I don't have TrackBacks, I have the brain image on every page of my site and I track my referrals through that image.

I'm not going to type out the exact URL's that I get redirected to when I follow these referrals (remove the [ ]'s if you want them), but web[ ]dev[ ] is one (refers as aizzo[dot]com/blog_posts). i[ ]start[ ] is another spammer that tries to send me to a dating service site.[ ]it[ ] tries to look like a search engine (www[dot]makeindex[dot]com).

So, to those who would do the referral spam thing, let me make one thing perfectly clear. The people who read their referral logs are generally technically savvy. Tricking them into going to another site is not going to make them buy from you. Instead, it's just going to piss them off.

XP Home On A Domain

Susan Bradley, the Microsoft MVP for Small Business Server, has been on a bit of a rampage this month about OEM's selling businesses machines with "Windows XP Home Edition" intalled on them. Later, when they try to join their "XP Home" boxen to a domain, they find they can't. Since I get asked this on a regular basis as well, I'm linking to it so that Google will bump up the PageRank.

"Windows XP Home Edition" CANNOT JOIN A DOMAIN!

And remember, even if you do join an XP MCE 2005 box to a domain, there are several things you can no longer do with it, such as use Media Center Extenders.

December 28, 2004

Linux Follies

I know that LinuxWorld isn't exactly looked on fondly by the F/OSS community, but when I saw this, I just had to screencap it and laugh out loud. (Click picture to open full-size: shrunk 50% for the blog.)

Pro-Microsoft Banner and ActiveX warning on LinuxWorld website

LinuxWorld is supposedly a Linux-activist site, and as such would be expected to be using Linux-centric technologies. So, at the top of the page, we have an ad from Microsoft about how "Mainframe Linux was found to be 10x more expensive than Windows Server 2003." In addition, the page tries to load an ActiveX control, which is a Microsoft Windows (or Linux with certain Crossover plugins) technology.

Sometimes, stuff like this is just too funny.

Blogger Bug Kills Posts?

Well, I just barely noticed this, but all of my blog posts from May 1 through August 9 have mysteriously vanished from Blogger.

Needless to say, this is slightly upsetting. I haven't been archiving these posts, but perhaps I should. After all, it seems like Google may not be keeping them around...

Katamari Damacy

I picked up "Katamari Damacy" for the PlayStation 2 during my lunch break yesterday using my Christmas bonus gift certificate from the city.

Essentially, the purpose of the game is to roll a ball over items of increasing size until your average diameter is over a certain size. The larger you get, the larger the items are that you can pick up. Eventually, you can start picking up animals, people and buildings.

I meant to play it for about an hour. I nearly stopped after ten minutes because of the music in the tutorial room. However, once the tutorial room was finished, I kept playing...and playing...and playing...and playing...and playing...

I finally finished after about five hours. Actually, I guess I should say that I forced myself to stop. My goal was to make my ball twenty meters in diameter. When I was done, my ball was forty-two meters in diameter. I was rolling up boats, houses, construction equipment, elephants, swordfish, smokestacks, you name it.

"Katamari Damacy" is rated E for Everyone, but just a small warning to parents: once you see this game in action, you will believe that drugs were involved in the creation of the game.

Location Nation, What's Your Station?

Until you start updating your physical location in web profiles, you never realize exactly how many places store your location.

That's probably the weirdest part of cyberspace for me. While I maintain several points of cyberpresence (my blog and my domain are good examples), I still feel a strong bond to my physical locale. While my online actions define in large part who I am, I still need that reassurance as to where I am.

It's essentially the five W's from journalism: who, what, where, when and why.

So, let's try starting a bit of a meme here. (Maybe if I'm lucky, this will be my final link from Scoble...given that I doubt that a video game test lead will be of much interest to the vast majority of his readers.)

Who are you?: My name is Michael Russell.
What are you?: I am currently a programmer for Layton City Corporation, but starting January 3, I'll be the Lead Tester for Ritual Entertainment.
Where are you?: Sitting in the basement of the City Main Offices in Layton, Utah.
When are you?: I'm in my 30th year of life, 10th year of marriage, and 4th year of home ownership.
Why are you?: I exist to find problems and the solutions to those problems.

So, what are your answers to the 5 W's?

December 27, 2004

New Year's Resolutions

My New Year's resolutions: 1280x1024, 1600x1200 and 2048x1536.

Kidding, just kidding. While I do have three New Year's resolutions, those are not it.

First: I resolve to maintain and improve my programming abilities. Over the last fifteen months, I've proven that I can design and code on a deadline and with a high quality bar. Over the next year, I intend to work on filling in the gaps in my programming knowledge as well as improve my time estimation skills.

Second: I resolve to maintain my ethical standards. During my last year at Microsoft, I let my standards slip a bit because I was so burned out I just didn't care anymore. I can't let that happen to me again...ever. When it happens, it not only affects me, but it affects my projects and everyone around me.

Finally: I resolve to be more outgoing. I'm a bit of a recluse by nature, but I'm moving to a new state where I know nobody. By being more outgoing, I can start to weave a new safety net of friends that I can fall back on for moral support.

T-3.5 Days And Counting

Well, here's my schedule for this week.

Monday. Update the links page on my site. Finish up my final work project by creating a reporting system for my custom-built inventory responsibility system. Tonight, I get the remainder of my DVD's back and return the only game I've borrowed in recent history.

Tuesday. My department is holding a farewell lunch at Red Robin.

Wednesday. I clean off my desk. Anyone who knows me will know that this is at least an 8-hour job.

Thursday. It's a half-day at work, and also my final day at work. I'll probably spend the entire morning bringing home all of my books. Someone will be coming over in the afternoon to talk to us about

Friday. I pack up the remaining electronics and whatnot and ensure that everything I'm taking with me will fit into the two totes I'm checking for luggage. (The totes are see-through and have multiple locations to add zip-tie locks to secure them.)

Saturday. Last full day with the wife, so I'm going to try to spend as much time together with her as possible. I'll also prepare all of my bills that have to be mailed in my absense next week.

Sunday. My flight leaves Salt Lake International Airport at 4:52pm. I'll be in Texas shortly after 8:00pm local time. (Assuming all goes well, anyway) I'll be staying at the AmeriSuites on North Lamar Street in Dallas, less than half a block from my new tribal center.

Due to the move and whatnot, I cannot guarantee that I'll be able to post until at least January 4. Just warning everyone ahead of time. Also, I'm going to be under an NDA, so unless the project I'm working on becomes public, my lips (and for this site, my fingertips) are going to be sealed.

December 24, 2004

Grumpy Gamer's "12 Days Of Christmas"

Ron Gilbert has been posting his version of the "12 Days Of Christmas" from a game developer's point of view.

When I read this, two things went through my head:

1) This is very true, and I can't believe I'm getting back into the gaming industry; and
2) I've never had a Christmas crunch.

What's even scarier is that #2 went through my head before #1 did.

December 23, 2004

Three Things

The current blog meme hits here...

Three names you go by:

Three screennames you have:

Three things you like about yourself:
I succeed at anything I set my mind to.
I have a vast wealth of useless knowledge.
I am extremely patient.

Three things you hate/dislike about yourself:
When I feel that I have been wronged, I get extremely vengeful.
I can be excessively stubborn at times.
I keep my emotions bottled up inside.

Three parts of your heritage:

Three things that scare you:
Climbing up/down ladders

Three of your everyday essentials:
Coca-Cola Classic
Complex Carbohydrates
Teasing My Wife

Three things you are wearing right now:
Casio Analog/Digital Watch
Wedding Ring (on chain around my neck)
Coca-Cola Polar Bear T-Shirt

Three of your favorite bands/artists (at the moment):
Depeche Mode
The Corrs

Three of your favorite songs at present:
Runaway (Acoustic) - The Corrs
Deep Sexy Space - Lords of Acid
Miracle - Vertical Horizon

Three new things you want to try in the next 12 months:
Riding in a speedboat
A Texas winter
A four-day work week

Three things you want in a relationship (love is a given):
A sense of humor
Some time alone
A sense of adventure

Two truths and a lie:
I have simultaneously impressed and disappointed several of my previous managers, and with the exception of my last year at Microsoft, the "impressed" part always won out.
I have brown hair, blonde eyebrows and a red mustache/beard.
I have the same number of toes and toenails.

Three physical things about the opposite sex (or same) that appeal to you:
I have a feeling I better not answer this one...

Three things you just can’t do:
Grow a full beard
Cross my eyes
Forgive myself

Three of your favorite hobbies:
Painting miniatures
Collecting DVD's

Three things you want to do really badly right now:
Go to the restroom
Finish my Christmas shopping
Sleep for sixteen hours

Three careers you’re considering:
Program Manager

Three places you want to go on vacation:
Great Britian

Three kids names:
Unable to have children, so I'm not answering this one.

Three things you want to do before you die:
Go on a tour of Europe.
Get my college degree.
Be as known to gamers (hopefully for good things) as the Levelord is.

December 22, 2004

Insane Clown Pricing

I went to Expedia last week to try to price my tickets for my one-way flight to Dallas, Texas on January 2. The best price I could find was $358, but I couldn't pay until today.

I went back to Expedia today and paid $855.09 for my ticket...nearly a $500 price premium due to my date of payment. On the upside, I shaved $30 off the price of my hotel stay that night. [blech]

I'm just hoping I can get reimbursed for my airfare on day one...

December 21, 2004

Last Stats Post

Since my new job won't have me doing web statistics analysis, here is my final post regarding the web stats for a site that the general public visits. Given that these seem to be among my most popular posts, I'm just going to let the numbers speak for themselves.

Operating SystemsHitsPercent
Windows14928495 %
Unknown51973.3 %
Macintosh21761.3 %
Linux3020.1 %
FreeBSD480 %
NetBSD110 %
WebTV10 %
Unknown Unix system10 %

MS Internet ExplorerNo14432891.9 %
FireFoxNo42482.7 %
MozillaNo37682.3 %
Unknown?17581.1 %
NetscapeNo16311 %
SafariNo7880.5 %
OperaNo3320.2 %
KonquerorNo710 %
WgetYes680 %
Firebird (Old FireFox)No210 %
Others 70 %

Microsoft Grammar Checker

It looks like someone didn't listen to Clippy's grammar suggestions.... [found on this update page]

This download is available running genuine Microsoft Windows.

Evidently, according to Microsoft grammar, this blog post is available running web browser.

The Results

One response only via chat, so I'll go with that. The historical blogs stay. However, if I make mistakes in what I say, or if someone wants to add their own viewpoint, not only do I welcome the comments, I encourage them.

(Slight grammar update: Since I'm making fun of Microsoft's grammar in a recent post, I figured I should correct my own mistakes.)

December 16, 2004

A Requiem For Access

Well, it's official now: Take Two Interactive purchased Indie Game Studio (formerly Access Software).

I'm not sure exactly what Take Two got out of this besides the studio. According to Microsoft's trademarks page, Microsoft still owns the "Amped" trademark, the "Links" and "Links Extreme" trademarks and the "Tex Murphy" trademark.

However, the development, art and test staff may be enough. The team had been working on Xbox Next technology prior to their purchase, and given how hard the team has been able to push the standard Xbox hardware, there's a good chance that they'll find a way to bring Xbox Next to its knees.

Oh, and one tip for Take Two: this studio is located in Utah, so you should only plan on six workdays in a week, not seven like in some other game development companies.

Update: Here is a link to their official statement.


I've been having a bit of a conversation in the comments for my Serendipity post with an anonymous former member of my old group in Salt Lake. It's gotten me thinking quite a bit about how we place mental filters on our memories. It also shows me the benefits of blogging in real-time as opposed to the historical blogs I have been doing.

It is impossible to ever clearly remember the past. Our perceptions will always be clouded by our experiences leading up to any event, as well as our experiences that occur as a result of the event.

For me, I look back at my time at Microsoft and see a great place where I learned a lot of hard lessons. I chose to leave to prove myself, which I feel I have done. Others see it as a division in the ass-end of space where our existance was tolerated until we became too unprofitable to keep around, and that my leaving when I did was merely my last-ditch effort to avoid having the scarlet "L" for layoff branded on my employment record for eternity.

To be honest, there may be a lot of truth in both points of view. However, my current set of filters choose to focus primarily on the positive aspects of being at Microsoft.

That pretty much sums up my personality. I try my best to remember and focus on the best parts of my past. I do that for one reason and one reason only: while I try to remember all of my successes, I do remember all of my failures.

I'll be going through my regular everyday activities, and these failures will come out of left field and slam me with the full effect of their results. My period of military service: wham. My actions as a senior in high school: wham. The friendships I destroyed because of who I was at the time: wham. My actions that caused D.W.'s choice: wham. I remember all of them, and my memories of them stay just as vibrant today as when they first occurred.

All that brings me to the benefits of blogging in real-time as opposed to a delayed blog. It's essentially the same as writing a journal. You place your feelings and experience into the ether or onto paper, and while the experience stays with you, the feelings fade. It gives you an opportunity to look at the past and see exactly what you were thinking when you ran for student body president, or when you were run over by a co-worker, or when you broke someone's heart.

In short, it gives us the opportunity to learn more from our past by letting us use our current perceptions as well as a snapshot of our perceptions in the past in an effort to come closer to finding the truth. The longer we wait to log these perceptions, the more filters that get in the way, until we get to the historical blogging quandry I find myself in today.

A massive chunk of my readership (I've got about 100 regular readers according to my stats, but only about four people who actively comment) are either friends in the industry or friends from MGS. Because you are the people who are most affected by this, I'll leave it up to you.

Do I:

a) Continue to do the historical blog entries publicly as well as current entries; or,

b) Do current entries only, and do the historical entries in my private blog (no, I'm not giving the URL)?

Vote by comment or E-mail. I'll post the results on Monday, December 20.

"Haven't We Done This Already?"

I just got back from my "farewell lunch" with my old Microsoft Game Studios teammates.

I think the most telling comment about the whole thing was, "Haven't we done this already?," referring to sending me off into the nether.

We had a similar lunch when I left Microsoft.

So, to Drogo, Jinx, Wedgemaster, Remoh, Goose, Burge (you had so many aliases, I have no idea what to call you) and Ron's Wife, thanks for seeing me off.

[T-7 Work Days Left]

December 14, 2004


I forgot to mention this occurance, so I figured I better get it out of the way now before I forget.

At 12:40pm Mountain on December 2, I faxed off my acceptance letter to Ritual Entertainment. Three hours later, I received an E-mail from Microsoft Recruiting wondering if I would be interested in interviewing for a position as an SDE/T for the ASP.NET team.

Now, here I had a bit of a quandry. Even though I was anxious to return to game development, I loved my time at Microsoft. To be dead honest, if it wasn't for the actions of two individuals at Microsoft, I never would have left. So I had a choice: do I go back to the industry that I love, work with industry legends and respect the agreement I made; or do I go back on my word and throw the opportunity away for a change to work on a technology that I admire greatly and for a company that I admire greatly?

I guess it says something about me that my decision took me less than five seconds. I made a promise, and I intended to keep it. I wrote an E-mail back to the recruiter telling her that she was three hours late.

While I'm glad that Microsoft was still interested in me after I left, and I may try to return to Microsoft sometime in the future, I think that what is best for me now is to stay out in the world and gain more real-world (as opposed to the strange reality vacuum inside most Microsoft studios) experience so if I do return to Microsoft, I do so as an ambassador of reality as opposed to a technogeek with a passion.

Testing Top Ten

Since I'm going to be returning to my roots as a tester after fifteen months as a developer for my home town, I've been trying to...well...revive my testing skills.

While the best developers and testers have similar mindsets, there is one core tenet which differs between testers and developers. A developer asks, "How can I make this work?" A tester asks, "How can I make this break?"

My manager here at the city has even pulled me aside on several occasions and complemented me on the quality of my work, although he did it in a bit of a backhanded way. He said that I'll often hold a product back until it meets my quality bar, even though it's fully functional. Personally, I see absolutely nothing wrong with that. While I built auto-update functionality into every product that I've released here at the city, I think that the perfect measure of our quality is how often we have to use it for bug fixes rather than new feature releases.

So, now that I've lived some time in both sets of shoes, it's time for a top ten list.

Top 10 Things That A Tester Needs

10. "How to Break Software: A Practical Guide to Testing" by Dr. James A. Whittaker. If you are a tester and you have not read this book, you have a choice. You can either a) go out, buy the book, read it and improve ten-fold, or b) wallow in your own mediocracy.

9. An extremely durable stress ball. Testers are the bearers of bad news more often than not, and as such receive massive amounts of abuse from other team members. A stress ball gives you a means of relieving your stress without killing someone.

8. A large pad of paper and at least three pens. Never give a tester a pencil. A tester should write his or her first impressions of anything. A tester should make notes of all steps that he or she takes. If a tester second-guesses himself, there should be a permanent record of that second-guessing. Whenever a tester erases something, a tester eliminates the potential to go back to an earlier assumption.

7. "Debugging Applications for Microsoft .NET and Microsoft Windows" by John Robbins. The more information that a tester can give his or her developer, the better. This book is by far the best guide to debugging Windows programs I have ever found and includes not only tips on managed debugging but massive sections devoted to debugging native Windows applications.

6. A wall or desk calendar with plenty of space to write notes about upcoming deadlines. Yes, you may have everything in Microsoft Project, but I don't care. Having the calendar also gives a written history of the project so a tester can have more information available to properly attempt to forecast things such as the zero-bug bounce.

5. A stopwatch with a large, readable display. Unless I need to time something that is going to take less than a second, I'd rather rely on a stopwatch than your timing code. Why? The stopwatch won't inject additional code and page faults into your application.

4. A constructive hobby. The testers that I have found have the most longevity are ones who have had hobbies where they make something. Programming, woodworking, miniature painting...anything where you are not actively destroying something. A tester without a constructive hobby is a tester who either burns out in six months or a closet sadomasochist.

3. At least two computers. One computer should contain the tester's mail client, bug tracking software, music, IM, Office, Visual Studio for remote debugging, etc. The rest should be a test-only machine that can be wiped and re-imaged at a moment's notice. (Two monitors are also nice, but if you get a KVM, try to turn off the ability to switch machines via keyboard commands. I've had several manual tests ruined by the keyboard shortcuts included in major KVM's.)

2. A VCR that can record the video-out of the test rig. Having a VCR that records your actions has three benefits. First, you can go back and verify that you didn't do anything you didn't write down in your notes. Second, you have definitive proof that the bug occurred, even if you can't get it to repro. Finally, when you go talk to your developer and hear, "It works on my box," you'll have something hard to throw at him.

1. A dog-eared copy of "Soldier of Fortune" magazine sitting on the corner of your desk. Nothing makes a developer think twice about resolving one of your bugs "Not Repro" than the nagging thought in the back of his or her mind that a tester will remove a panel from the ceiling above them, slowly lower themselves down and drive an eight-inch hunting knife into their lower skull...or so I've heard.

December 8, 2004

Scoble's Reach

Evidently, the Wasatch Front repels Scoble's link blog.

I'd been advertising the Davis/Weber .NET Users Group meeting for the better part of three weeks now. I even managed to sneak it onto Scoble's link blog a few times by judicious use of the almightly blog hog's name.

We had 10 people tonight, including the presenter. Of those, two were invited guests of the speaker. The remainder found out about it from a last minute E-mail from the head of the Utah .NET Users Group.

Nobody saw the fliers I put up at Weber. Nobody saw any of my forum posts. Nobody saw Scoble's link...not even the MS guy who was there!

So, Scoble, knock yourself down a peg, because there is at least one place that is immune to your RSS tendrils: Davis County in Utah.

Place your bets...

Tonight is the inaugural meeting of the Davis/Weber .NET Users Group. I'm pretty happy that this is happening for the most part.

I started working towards this back in September, back when it seemed like I was going to remain at the city for at least another 18-24 months. Even though I knew the people involved personally and professionally, it was rather slow going.

We finally got the OK in mid-November for the group, but the promised PR was nowhere to be seen. So, I started doing PR myself. I put up fliers at Weber State University. I posted to local message boards. Using Scoble's PubSub thingie, I even managed to get it onto Scoble's link blog. (Hey, if you've got a tool I can exploit, I'll find a way to exploit it!) Finally, an E-mail went out last night.

Anyway, we've got a great speaker and an excellent location, but minimal PR and all of the E-mails I've been receiving today have been, "Great to finally have a Davis users group. Won't be there tonight, though."

So it is time to place your bets. How many people do you think will show up tonight? The room's capacity is ~75, and I've got seating set up for ~20.

Do you think that we'll have:

a) 0-10;
b) 11-20;
c) 21-40;
d) 41-60;
e) 61-75;
f) more than 75?

Results will be posted tonight after the meeting.

December 6, 2004

My Least Favorite VS.NET/ASP.NET Feature

Since this is a combination of the IDE and ASP.NET, I'm including them both in my header.

I really like ASP.NET user controls. They are an extremely flexible way to add stock functionality and appearance to a website. We use them quite extensively on the city's website.

So what's wrong? Simple. You can't talk to a user control that you drag/drop onto the form unless you go into the code-behind and manually add a reference to the control.

To see this in action, create a UserControl. Add a label to the user control. Add a Public property to the UserControl that would change the text in the label.

Create a new web form. Drag the UserControl that you have created to the web form.

Now, in the Page_Load event, try to set the property. You'll notice that you don't get any Intellisense because the IDE doesn't know about it, and if you try to compile, you'll get an error because the UserControl only exists on the page, not in the class.

I've got one page that has 19 seperate UserControls with a lot of logic in the controls that I need to be able to speak to. It's a pain in the ass to have to go into my code behind and type "Public Blah As BlahControl" over and over and over and over...

Why isn't there an automated add-in to VS.NET that would maintain those automatically for you?

December 4, 2004

Bobbin is back

"The New Adventures of Bobbin" is a comic strip I've been following for quite some time now. It recently went on a bit of a forced hiatus as a result of some issues with a hosting company.

Well, the comic is back now, so if you've been getting "Server Not Found" errors in the past, check it out now.

December 3, 2004

Scoble's Link Blog

Good news: Scoble's Link Blog has a new, sleeker look.

Bad news: Only his link blog headlines respect changes in browser font size. The rest of the text is fixed size.

Still, it's a nice start towards a nicer link blog. Good color choices.

Update: 4:49pm Mountain: Evidently, I caught a test post of the new look. It's back to the old way now.

December 2, 2004

The Hardest Meeting Of All

I just finished meeting with my manager at Layton City to give him my 30 days notice. It was literally the hardest meeting I've ever had.

I've been working now for about 13 years, and during that time, I've quit several jobs that I disliked. Even when I left Microsoft, I was having severe problems with the local unit due to a man who wanted to exert as much force on his employees as his waistband exerted on satellites.

But this is the first time ever that I have left a job that I liked. I'm not leaving because I hate the job...quite the contrary. I'm leaving because this opportunity is one of those once-in-a-lifetime deals, and if I don't grab this opportunity, I'm going to find myself regretting it for the rest of my life.

I hope I'm making the right decision. On the upside, I guess I've got a severe piece of .NET-related news to share at the inaugural meeting of the Davis/Weber .NET User Group on Wednesday.

I am now a tribe member...

Less than 30 minutes ago, I faxed off and received confirmation of receipt of my acceptance letter.

Starting January 3, 2005, I will be working for Ritual Entertainment in Dallas, Texas.

Right now, I'm so nervous that I feel sick to my stomach, but then again, nothing worth doing is ever easy.

December 1, 2004

Offer Made...Do I Accept?

I received my offer letter tonight. It's not a "knock-out-of-the-park" offer, but it's acceptable.

I need to decide by tomorrow morning. Whether I accept or decline, I'll post everything here.

Miscellaneous Stuff

I got my free credit reports last night at Fortunately, I didn't have any problems with it. I also didn't see any identity fraud at all.

However, not only were there some fairly severe usability issues with the site, but there were some fairly massive efforts to upsell consumers to pay services. Also, one of the credit reports would not print properly with standard printer settings.

I've got the section up on my domain for the Video Game UI Hall of Shame/Hall of Fame. My hope is to have the first entries up this weekend.

Also, I've succeeded on one of my two goals. Entering "Michael Russell" into Google brings up my blog as result number five. Now I get to work on having my domain come up in the top ten results.

November 30, 2004


Why did the MySQL/PHP developer cross the road?

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) in /var/www/html/answer.php on line 19
Unable to connect to database server!

Microsoft discriminates against gays? I don't think so.

I caught a wiff of this article on ActiveWin about Barbara Campbell, a former Microsoft employee who is claiming sexual discrimination by her manager 18 months after she quit.

Is it possible that her manager, Tiffany Treacy, sexually discriminated against her? It's possible, I'll admit that. However, does Microsoft back discrimination against homosexuals? Definitely not.

Microsoft is one of the most open workplaces I've ever worked at. Even on the Exchange servers, there are "virtual support groups" for gay and lesbian employees.

Microsoft has very straightforward policies on how to handle sexual discrimination complaints. Had Ms. Campbell reported the discrimination to Human Resources prior to her resignation and had nothing happen, then she might have a chance at convincing people that this did in fact happen. However, given the timing and what I know about Microsoft, I can see this as nothing more than an attempt by a former employee who was being "managed out" (at least from the sounds of the article) to lash back at Big Bill.

November 29, 2004

Davis/Weber .NET Users Group First Meeting

Well, I worked hard to get a place, and thanks to Ben Miller, we've got a speaker and prizes, so I guess we've got a meeting!

The inaugural meeting of the Davis/Weber .NET Users Group will be held on December 8, 2004 at the Layton City Center buidling at 437 North Wasatch Drive.

Our premiere speaker will be Aaron Skonnard of Pluralsight fame. He'll be giving everyone the scoop on Web Services and Service-Oriented Architecture (or SOA for the acronym buffs).

Directions and details can be found here, and if all goes well, maybe I can even get the almighty Scoble to blast this out to the world on his newfangled full-text feed...assuming his bandwidth issues go away.


I just finished setting up my Technorati profile. It'll be a little while before my blog is associated with my account.

You know, the deeper I get into blogging, the more tech-heavy it seems to be getting. Just once, I'd love to see a tool like this set up in such a way that someone as tech-lite as my wife could do it.

Game UI Hall Of Shame

I have made a decision as to what to put on my domain: a Game UI Hall of Shame.

Haven't we all come across video game UI that left us scratching our heads, wondering what to do? How about UI that looked like it was supposed to work one way, but instead worked another?

Well, I've been encountering that WAAAY too often, and so I'm going to do something about it. I'm going to document it and publicize it and ensure that when someone else makes the same mistake that they can't claim ignorance.

Forgive the rant...long morning.

How To Ship Your Product On-Time

Over the last several years, I have worked on over two dozen products, and I've learned a lot of different lessons about them. That being said, there is one lesson from my gaming days that rings true across everything.

If you want to ship on-time, use a structured text file (like XML) for everything that makes sense until the last minute, and don't mix binary and text values in the same file. For games, that means save games, option files, map data, everything except for your image data. For utility software, anything you save out aside from images. I'm going to give you a few different examples of how following this advice would have saved us time and effort back at MGS, and one area where the change did help quite significantly.

First off, how many times during the development of your product has the file format changed? For "Links 2001," our binary file format changed over a dozen times. Each time, it was to either reorder the data or add an additional field. Each time, parts of the team were essentially down for anywhere from two to five days while we waited for the conversion to be handled.

All of the main data files for the "Links" series are zlib archives with encrypted directories. The archives for the courses contain textures unique to the course as well as the full geometry data for the course. All that was changing was the format for the geometry data. Had the geometry data been stored in XML format, it would have been excessively easy to make the conversion happen either at load time in the course designer or during the next save. When adding a new field, simply add a sensible default on load and save out the current value on save. When reordering, just change the order that you save the items. As long as your loading code can understand XML, your loading code will not change aside from adding support for the new fields.

The save game files for the "Links" series were all binary reads directly into a structure. However, this led to some cheats. For example, in "Links 2001" you could customize your club distances to match your real game. However, some people figured out that you could hex edit those values in the save game so they would be outside of the legitimate range, then take that player online. Had we used XML as a base (even if we encrypted it prior to saving), we could have imposed a range on the input values and refused to load a save game that did not validate. The same thing was happening with our clubs. You are limited to a maximum of 13 clubs in your bag, but I was able to give a golfer all of the clubs using the same technique. Same fix as well. Our lead developer spent two days adding the validation code for "Links 2003."

The "Amped" series used a highly customized version of the scripting language Lua internally. In fact, all of the save game files are Lua scripts. All Xbox save games are required to be digitally signed. This was a bit of a problem for the first "Amped." Text files are not a certain size, and memory was at a premium. The digital signatures were not the same size, and neither were the files, so how could you tell which was which?

For "Amped 2," the development team had several different Lua files. Their solution was to store the digital signatures in a seperate file. Each Lua script would be signed, and each signature would go to a dedicated space in the signature file. If the signature file was changed, the scripts wouldn't verify, and if the scripts were changed, the signature file wouldn't verify. All was good with the world. The signature code was added quite late in the cycle, but the save game code didn't change as a result of it. Because of that, we only lost a couple of hours due to a single bug in the validation code.

Now I can hear two objections to this: the first being load times will increase, the second that disk space requirements will increase. Well, given the number of security holes that I've seen in games in this industry, I see the tradeoff as acceptable. However, there are times where load time is of the essence.

The biggest speedup will come from compressing the file. While you may think that decompression is going to be slower, I've learned that disk access is slower by several orders of magnitudes, especially from CD or DVD. Plus, XML compresses quite nicely. So, squish the file before writing it to disk and decompress it on read.

November 28, 2004

We Have Met The Enemy...And He Is "L33T"

I don't think it's any surprise to anyone that I consider video games to be art. Admittedly, it's art created by several dozen people over a span of several months, but then again, so is modern cinema. So while you may not agree with the statement being made by video games and you may question their artistic value, the fact that they are an artistic statement should not be under debate. However, I have an honest belief that video games are going to be split into two seperate camps: the barely profitable games made for the hard core gamer, and the highly profitable cookie-cutter games made for Everyman...and we only have ourselves to blame.

Right now, most of the titles in this industry are supported by the hard core gaming crowd. These guys are the equivalent of the film snobs who endlessly debate Hitchcock's camera angles and have no end of fun deriding the latest Bruckheimer flick. The hard core gamer demands every feature ever seen in the genre, a difficulty level that even Job would look at and cough, and a game that requires a commitment on the level of military service.

On the flipside, we've got the Everyman gamer. These guys are the people who go watch Bruckheimer flicks on day one and enjoy it, and think that "Hitchcock" means that they need to adjust their underwear. They want a game that can be picked up in minutes, can be played in brief intervals, and can be beaten without mastering a 17-step combo with split second timing.

Thanks to "The Sims," the industry has attracted many more Everyman gamers, and has shown the industry the profit potential contained therein. Very few companies have been able to cross over to both classifications. Blizzard has always succeeded in this area, with "Diablo" and "Diablo II" their biggest hits along those lines so far. Sony's "Everquest," Blizzard's "World of Warcraft," Turbine's "Asheron's Call," etc., have brought out the hard core gamer and the Everyman in a common world: the hard core gamer power levels, the Everyman chats a lot and loves learning how to craft and entertain.

I browse a lot of message boards, and I attempt to be friendly whenever possible. However, the scene I see most often is that of an Everyman gamer who is looking at a more hard core game asking for help, and the hard core gaming community essentially shuts them out with cries of "n00b." That gamer, forever branded with a scarlet "N" on their chest, is left with a bad impression of not only the hard core gaming community, but with a bad impression of the game itself.

While there are many hard core gamers (myself included), we are allowing the more vocal of our members to loudly berate and shut out the very community that we are going to need in order to keep hard core gaming profitable. Already, PC game developers are abandoning the platform in droves and heading for consoles, where "patch" is a four-letter word and "learn in 5 minutes" is the mantra.

"We have met the enemy, and he is us." Walt Kelly first used that statement on an Earth Day poster in 1970, but it is true nearly everywhere. Like it or not, if we don't start keeping our less desirable members in check, they'll "l33t sp34k" our games into niches that they'll never escape from.

November 27, 2004

Earnings and relocation

I'm currently awaiting an offer letter from a potential employer out of state from where I live. Because this would obviously require me to move, I've been sitting down one final time to try to figure out how much money I would have to earn at this new place in order to make the move worthwhile.

I have two floors: one based off of my income at the city, the other based off of my income at Microsoft. Even though the cost of living at this new location is 13% higher than where I currently live, I have some very specific cost-of-living factors that I have to factor in. Fortunately, because of my previous research, I've calculated that I will need to net approximately an additional $15,000. The flat number for extra living expenses and expenses that will remain here due to long-term commitments that I can't get out of makes the calculations a lot easier.

At the city, my annual gross is approximately $44,000, and my annual net is approximately $33,000. Assuming an equivalent tax rate, that means that I will have to add an extra $20,000 to my gross. In other words, it is pointless for me to move for anything less than $64,000. At that level, I'm essentially breaking even.

To be comfortable, I should be making about what I was back at Microsoft. At Microsoft, I was grossing about $53,000 not including bonuses. I was netting about $36,000. Assuming an equivalent tax rate, I'll have to add an extra $22,000 to my annual gross. So in order for me to be significantly enough ahead to make it truly worth my time and effort to relocate, I'll have to be earning $75,000.

Doing math like this sucks. There is nothing quite as humbling as distilling your life and experience down to a dollar value.

November 24, 2004

My final political blog of the year

I'd like to consider myself a moderate Republican. While I believe in the basic tenets of the Republican platform, I tend to disagree with several of the more...ahem...religiously motivated pillars. Meanwhile, I married a hard-core Democrat ten years ago. Want to know what's scarier? Both of us voted for Bush.

After spending some quality time with my wife last night, I think I figured out why she voted for Bush. I also think I have figured out how the Democrats can get the White House back in two easy steps.

Step 1: Listen to country music. Not selectively listen to country music, either. Don't just listen to the Dixie Chicks...listen to all of it. You'll find a lot of stories about the South, about building yourself back up from nothing, about losing it all. You'll also find a lot of extremely patriotic music that really resonates with the core of America. ("Courtesy of the Red, White and Blue" by Toby Keith comes to mind.) Country music doesn't villify a person who sends someone off to do battle for the U.S.A. Country music honors the sacrifices made by our soldiers.

Any candidate that the Democrats pick for 2008 not only must resonate with those values, but have a past that also resonates with those values.

Step 2: Ignore Hollywood. Mainstream America sees two political factions in Hollywood. You have the leftist liberal Hollywood stars, who use their sandboxes to bring attention to their pet charities and demand donations and support. Mainstream America mostly sees the "I'm famous, so do as I say, not as I do" side of Hollywood. For every Ed Bagley, Jr. who actively drives an electric vehicle, there are fifty Streisands who sue photographers for exposing her hypocrisy. Then there are the moderate Republicans, who have Arnold Schwartzenegger as their poster child. Arnold was an immigrant child who went from having nothing to having a successful bodybuilding and acting career and finally worked his way up to being governor of California. He's not saying, "I'm famous, so you should do what I say." He's saying, "I did this by working hard for what I believe in. You can, too."

I'm not saying that the Democratic party should abandon their ethics, but if you let your ethics be decided by people who have no basis in reality, how can you realistically expect to win an election?

Real Stats for Real People

You hear a lot on the web about Firefox and alternative browsers. So, I thought I'd share some stats from a real-world website for the last 24 days.

In the evaluated time period, we've served up 36,973 pages to 3,739 unique visitors. We've served up 1.86GB of data to visitors in that time. To be honest, this is about normal for us. Search engines slurped up another 1.41GB of data during the same period.

For OS statistics, Windows is the operating system of choice for ~95.6% of our visitors. "Unknown" slips into the number two spot with ~2.6%. Mac users are relishing the #3 spot with ~1.5%. Linux, FreeBSD and WebTV have less than 0.1% each.

For browser stats, Internet Explorer has a dominating lead with ~92.3%. Mozilla and Firefox are now neck and neck with ~1.9%, with Mozilla having a minor lead. Netscape is at ~1.4%. "Unknown" comes in at ~1.2%. Safari has ~0.6%. Opera and Wget have ~0.1% each. Camino, Firebird, Lynx, LibWWW, Konquerer, WebTV's browser and the Lotus Notes web client each have a single visitor.

So if you take a look at our stats, only 3% of Windows users who visit our site are using an alternative browser.

Visitors to my blog, on the other hand, are a more technical crowd. Windows XP accounts for ~72.9% of my visitors. Windows 2000: ~11.8%. Windows 98: ~3.8%. Mac: ~3.1%. "Unknown": ~2.6%. Windows NT: ~2.2%. Linux: ~1.8%. Windows Me: ~0.9%. Windows 95: ~0.2%. FreeBSD: ~0.1%. Windows CE: 1 visitor (0%).

For browsers to my blog: Internet Explorer: ~73%. Netscape: ~22.5%. "Unknown": ~2.9%. Opera: ~1.3%. Galeon: 1 visitor (0%).

So, any little dirty secrets in your server logs?

Media Center Crash/Video Playback Fix

Are you running Windows XP Media Center Edition 2005?

When you watch some videos, do they play the video in fast-forward while the audio plays at a normal rate of speed?

When you navigate the UI while or after playing a video, does the Media Center UI crash on you, forcing you go get up off of your recliner, find the mouse and actually click on the "Send Error Report" button before you can sit back down and hit the green button again to soothe your need for MCE love?

Well, that has been happening for me A LOT. Turns out that the version of the DivX codec I had installed on my Media Center PC had compatibility issues with the Media Center app.

So, here's what to do:

1. Close the Media Center application, Media Player and any Explorer Windows.
2. Go into "Add/Remove Programs" and uninstall all of your old DivX codecs.
3. Go to and download DivX 5.21.
4. Install DivX 5.21.
5. Go into the Decoder Configuration Utility in the DivX program group, flip to the second tab and put a check next to "Disable logo."
6. Hit the green button and test the fix.

It worked quite nicely for me.

November 23, 2004


Clariticity is a blog run by my former boss at Microsoft, Kevin Carter. Kevin was a great manager who really got the short end of the stick after Daryl and Dave joined the group. While not the most technical of people, he had a good feel for his direct reports and how to properly manage them.

Kevin is no longer with my old studio. Instead, he's started his own business: Inspiripics.

Check it out, and wish Kevin the best of luck.

(Do I dare invoke the name of the almighty god of blogs, Robert Scoble, in a feeble attempt to drive traffic to my former manager's site? I guess I do.)

German Firefox Privacy Issues

I was reading on CNET about how Firefox's German-language version was causing a bit of a privacy ruckus thanks to eBay searches being passed through a Swiss data provider. While the Mozilla Foundation claims innocense, in the same article they talk about trying to set up revenue sharing deals for their integrated search.

The fact of the matter is that the moment money enters any equation, innocense is lost. You wanted to measure how your plugin was utilized so you could use those figures to negotiate profit-sharing deals? That's fine. Now explain to me why when you do it, it's an honest mistake, but when Microsoft does it, it's necessary to have congressional hearings on browser privacy.

Being a nonprofit entity that releases software does not make you inherently better than a for-profit entity that releases software. If you want to be better than Microsoft, prove it through your actions rather than through your rhetoric.

November 22, 2004

Top 10 Issues With "Half-Life 2"

I figured that I might as well do more than a single post on this one, so here goes.

10. Box-stacking. Just because you can do box-stacking puzzles where the boxes seem to be covered in Vaseline doesn't mean that you should.

9. Excessively narrow catwalks. Your character runs by default and when he stops, he slides for quite a bit. However, massive sections of the game require that you not only crouch and crawl along, but that you crawl along a beam or edge about the size of a 2x4. Several times, the beam you are to crawl along is lost in the background rubble. For example, near the end of the game, your teammates are screaming "Run to the horse, Gordon!" You can see the horse, but the way to get to the horse is obscured by what remains of a cement wall. The only way to see the beam you have to traverse is to go to your teammates, turn to your right and look down. Even then, it's a three-part beam. Why couldn't I just knock down a wall and go out? Don't even get me started on the bridge level...

8. Load times. When it takes longer to load a level than it does for me to boot Windows, you know it's bad. I probably spent 20% of my time loading. One time, the game crashed during a level load. I didn't even notice until five minutes later.

7. The "stutter." The audio/video stutters were insane. Even when I reduced my texture resolution and dropped my sound to two channel, I'd still have period of up to 30 seconds where the frame rate would drop down to .5fps and the sound would stutter. Inexcusable.

6. Requiring media for the retail product after Steam account association. Sure, after I associate my account, I can uninstall the game and download it again from your highly congested servers and spend 36 hours saturating my pipe for no good reason, but why would I want to?

5. Too many "guess what the designer had in mind" moments. Oh, the designer wanted me to stack a box so that I could jump up onto this ledge before getting crushed by this section of wall that I've never seen move before? Oh, the designer wanted me to use the hanging casket so I can go on a four-minute ride that is somehow less entertaining than the "It's a Small World" ride at Disneyland? Did these guys never play "Deus Ex?"

4. Incomplete and poorly implemented closed captioning. Don't get me wrong. I applaud the Valve guys for going through the effort to implement closed captioning for this title. However, there were several areas where the subtitles would not appear for dialog. There were also several areas where there was so much happening in a small section that massive chunks of dialog would scroll past before you could finish reading them. Great idea...hope they get it right for "Half-Life 3."

3. The flashlight. Let me see if I get this right...they've been improving Gordon's suit for years, integrating dash capabilities, improving the HUD, etc., etc., but running a cheap shoulder-mounted flashlight uses as much juice as doubling your run speed or generating additional oxygen for when you're swimming?

2. The rest of the NPC's. The care that went into the modelling of the primary NPC's simply throws the lack of work done on the rest into sharp relief. While Alyx and Barney look amazing, most of the rest of the NPC's just don't show the same amount of care.

1. The ending. They build you up for a Bruckheimer-style dash to safety, but end up dropping you into a black storage unit until you're needed again? The more I think about this ending, the more pissed I get.

November 21, 2004

2004: The Year Of Bad Endings

I just finished beating "Half-Life 2" less than five minutes ago, and it really seems to me that the last twelve months have included some of the worst endings ever made.

Whether it was due to internal quality bars and street dates colliding like "Halo 2," or hope for a sequel like "XIII," or whatever the Hell drove the "ending" that I got for "Half-Life 2," the vast majority of the video game titles I have played to completion over the last twelve months have made me regret spending the money, time and effort to do so.

I'm a relatively patient gentleman with games. I've been involved in their creation from inception through shipping through patching. I know that in the video game industry, there is a nearly universal drive to make the ending "worth it" for gamers. The designers, programmers, artists and testers really focus on making their endings amazing because they realize that if a person has a crappy final impression, they won't be as anxious to play another game from that studio again.

I'm more forgiving of the Bungie guys than I am of Valve. While both games essentially promised to be the second coming of the gaming Christ, while Bungie's title brought you to the brink of greatness and left you hanging, Valve's title brought you to the brink of greatness and let you down.

I'm sorry, Valve, I really am, but I just can't forgive this ending. Hell, by the end, I had almost forgiven you for the totally pathetic experience I had activating "Half-Life 2" and the heinous load times. But that ending...I know you want to make the series a franchise, but if you have learned anything, it should be that you must at least finish your story arc. Building up for a mad dash out of the building and leaving you trapped for eternity in a dark room isn't an ending. It's placing the player in storage until you drag the franchise out again.

Of course, your defenders are now going to jump in and use the "Lord of the Rings" movies as an example of recent entertainment releases where they didn't finish their arcs. The difference here? With "Lord of the Rings," we knew exactly how long we had to wait for each installment. How long will we have to wait for "Half-Life 3?" With "Lord of the Rings," we had a one-year maximum gap between installments. A lengthy bit of time, but doable. Given your track record, we're looking at five years for "Half-Life 3." I don't want to wait that long for a real ending.

Oh, well. I can only hope that the 2005 releases are better than the class of 2004.

November 19, 2004

The Gold Masters

I was replying to a post on Slashdot today (you know, doing my best to up the average IQ on the site) and it got me to thinking about our gold mastering process back at MGS.

The vast majority of our testing was done off of network shares/installs. However, once we hit Content Complete (which was supposed to be about twelve weeks before RTM, but usually ended up being four to six weeks), we'd switch to testing off of CD's. We'd burn one set of CD's at the fastest possible speed, then use our CD duplicating tower to crank out enough copies for all testers. Usually, it would take about 90 minutes to get enough copies out to everyone.

However, once we got to RC0, everything changed. (RC0 is the test for the release process. It's a dress rehearsal, essentially.)

We'd start by burning our gold master candidates to CD. We had one approved burner in the department for burning the masters. Once each CD was burned, we'd pass it to another machine to compare the bits burned to the CD to the bits approved for mastering. Once the bits compared correctly, we would pass the CD over to another person to get a CRC checksum for the entire CD.

We averaged four CD's per release, so you can imagine how much time this took. Once a second copy of each CD was done, we'd run that second copy over to the burn tower for duplication. This ended up taking about four hours, but the process was in place to stop us from compounding any errors.

Once we got to RC0, the network shares for install were locked down so that only a select few could read from them. Everyone else had to test off of CD's.

Anyway, the lessons to learn about mastering CD's?
  1. Burn on reliable media.
  2. Burn multiple copies and submit multiple copies.
  3. Use a tool like Microsoft's CRC tool (available to MSDN subscribers) and provide a copy of the tool to your mastering house as a double-check.
  4. Always verify that the bits burned to the CD are the same as the bits you wanted burned.
  5. Never expect to get it right your first time.
Hope this helps someone...

November 18, 2004

Mixed Feelings About The Press

I was reading about a reporter convicted of criminal contempt for not revealing one of his sources.

I'm really torn about this one. On one side, his actions in reporting the story itself broke no laws. His on-air actions, as far as I can tell, were completely legal.

However, most of the reporters I know of will only protect a source that didn't break the law. From the looks of this case, the source had to be a person who was under orders from the court not to disseminate any information. They did anyway. The person who leaked the tape had to be directly involved in either the prosecution or defense of the individuals in question.

So I'm torn about this one. On one hand, I respect the journalist for sticking to his guns and protecting his source, no matter the cost to himself. On the other hand, this journalist potentially contaminated the jury pool and acted as a tool of someone involved in the case in exchange for an exclusive.

I wonder what will happen the first time that a blogger gets hauled in front of a judge and asked to spill his guts about the events that he reports.

Minor Template Change

I made a small change to my blog template. I am now using em-sizes instead of pixel sizes for the fonts. Should be a little bit friendlier to those who have issues seeing.

Up With Hotmail, Down With My Neighborhood

I use MSN Broadband via Qwest at home, and I've been waiting patiently for my space upgrade.

Well, it finally happened today. My 25Mb was 66% full yesterday, and look at today!

1% of 2000Mb

I can handle that. What I can't handle is my neighborhood.

Last year, our neighborhood maintenance crew made some unauthorized modifications to our power box in our back yard. As a result of those modifications, I was without power for most of last night.

Because of that, I'm only about a quarter of the way done playing through Half-Loaded 2, I mean Half-Life 2. (Damn, that game loads a lot...)

November 17, 2004

Classifications of Testers II: The Sequel

Here are a few more tester classifications that I thought I'd share.

STRESS TESTERS. These guys define abuse. If your program is expecting only one input per second, expect them to find a way to cram over a million inputs per second through your pipeline. If your program relies on a database server, these guys will find ways of stressing your database server that you would never believe. Frankly, the Steam guys could have used one or two of these guys. The great thing about a stress tester is that they'll be able to tell you at exactly what point your system fails. The downside is that they may not be able to tell you why.

PERFORMANCE TESTERS. These guys define grace. As testers, performance testers supplement the stress testers by helping you find the performance problems under normal usage. UI hangs for a second? It's a bug. Your frames-per-second drop below 30fps on the minimum system requirements? It's a bug. Occasionally, you have to make your performance testers upset in order to make your stress testers happy. Also, expect your developers to have to answer for any decrease in performance. If you lose even one frame or request a second, you'll have to account for it.

INTERNATIONALIZATION/GLOBALIZATION TESTERS. These guys help you sell overseas and keep you out of jail. Internationalization ensures that all of your UI screens and shortcuts lay out correctly, work with right-to-left scripts, handle IME inputs, etc. Globalization testers ensure that you aren't making any politically risky moves, like mishandling the border between Pakistan and India, or getting involved in this whole "Taiwan/Republic of China" deal, or popping up a "V" sign with your hand the wrong way. In some countries like India and China, making mistakes of this magnitude can not only get your product pulled from shelves, but if you have local representatives in those countries, it can get them arrested.

THE BUDDY. This is a fairly new type of tester, but an invaluable one. If you have a tester who is having problems finding bugs on his own, put him with a capable tester and have him watch the other tester test. The two of them together will find more bugs than they would seperately. On "Amped 2," we would all buddy-test for about an hour every week. The sheer amount of bugs that we would find during those periods was insane. We would have one tester "drive," and the other tester observe. By splitting the testing and observing duties, you allow one person to just be a user and you allow the other person to put 100% of their mental prowess into finding the bugs. It works.

THE CONFIG TESTER. These guys come in two different flavors: hardware and software. Generally, these guys help you track down OS-specific or hardware-specific issues. Want to see how your app works on Windows Me with Long File Names disabled? How about how your app works on an ASUS A7Pro motherboard? Need to reproduce a graphics glitch that only happens when you're running multimon with a Matrox DualHead card and an ATI Rage? This is your guy. However, for him to be effective, you need to give him a script that he can run on every configuration that exercises all of your core functionality. If you don't, he'll just be spinning his wheels.

THE NUMBERS MAN. This guy would be a nightmare to Las Vegas. He'll look at the bug counts for each area, place a bet as to where a bug will be, and be right 99% of the time. Only problem with him is that he's useless until someone else has done some testing first.

Anyone have more?

November 16, 2004

Steam, Half-Life 2, Whatever...

What's more frustrating than installing your newest game, getting to the main menu, and having it crash? Installing the latest game and not even being able to get to the main menu because the authentication servers are too busy and the download servers are too busy to download the rest of the game.

What's more frustrating than that? Spending $80 plus tax for the Collector's Edition, opening the box and seeing that the box is half-empty. The entire package consisted of a DVD in a CD jewel case with the CD key printed on the insert, a "reference card" for a manual, an abridged Prima guide, and a large men's T-Shirt. For some reason, the extra does not seem worth the extra $25.

Of course, I can actually use the T-shirt, which is more than I can say for the game.

November 15, 2004

Classifications of Testers

I've been in Quality Assurance for a long time, and after a few years, you start seeing several different classifications of testers. While several of the classifications that I'm going to share with you may seem tongue-in-cheek, there is quite a bit of truth to the stereotypes. As a heads-up, a good test department usually has representatives from most of these classes. In addition, most testers are combinations of two or more of these.

KEYBOARD MONKEY. One of the most derogatory testing terms is actually a good fit for our first classification. The Keyboard Monkey takes a list of test cases and goes through them one by one. The upside is that since the test cases are pre-created, development usually has a nice set of repro steps. The downside is that a Keyboard Monkey will never look past their defined test case suite.

SADIST. This is what a Keyboard Monkey turns into the moment they look past their test cases. You can tell that you're dealing with a sadist when you hear, "I wonder what would happen if I did this...BOOM! Ahahahahah!" No test department is complete without a few sadists. While most sadists are great at getting bugs to trigger, the repro steps are usually a little lacking.

FUGU CHEF. Fugu is the name of a poisonous blowfish that, if not prepared for cooking correctly, can kill you. Fugu chef testers take their feature area and gradually dissect them until they find the "poison." While extremely thorough in their area, fugu chef testers are usually oblivious to how their feature interconnects with other features.

CARPET BOMBER. These guys will indiscriminately bug EVERYTHING as a seperate bug, even if all of the bugs they enter are the same. If none of your menu items have keyboard shortcuts, they will bug each menu item seperately. If none of your images in your help file appear, they will bug each missing image seperately. Carpet bombers will inadvertently inflate the find, fix and resolve rates for entire projects by not realizing that the bugs are related. Example: On "Links 2003," we had a tester file over 60 bugs against images not appearing in the help file. A single character fix resolved all the bugs.

CSI. When the CSI tester finds a bug, all other work for that tester stops. The CSI examines the bug from all angles, and will not only report the bug, but why it happened, explicit repro steps, which check-in(s) led to the bug, and a psychological analysis of the developer who checked in the bug. While this type of tester is usually the least productive from a numbers standpoint, they are invaluable assets to a team. Also called the "Grissom."

L33T HAXX0R. The L33t Haxx0r tester wants it to be known that he can cause your program to crash whether you want it to or not. He'll modify your save files using a hex editor to bring out bugs in your load routines. He'll man-in-the-middle attack your network streams to bring out bugs in your network code. While these guys are valuable, they're also dangerous if you decide not to fix their bugs. Chances are that their exploit code will leak after release because if you don't find their input valid, they'll find someone who does.

EDITOR. These guys will bug any typo on any screen that they can find. They'll be so focused on entering a bug that you have four periods in an ellipsis instead of the standard three that they won't notice the major crash that occurs after you click any button on that screen.

OKIE. The Okie tester is so in-tune with the users that he finds all of the bugs that the average user would normally find. You can tell an Okie bug because it's a bug that no tester in his/her right mind would ever think of testing for, but as soon as you read it, you realize that every single user will encounter this bug. You don't find many Okie testers, so do whatever it takes to hold on to the Okie testers you find.

SAVANT. The savant tester doesn't test. He simply sits down at a testing station and bugs manifest themselves in places you never would have expected. The savant will find bugs, but unfortunately, that's all they're ever good at. Never let a savant interact with a person outside of the test department.

WINNER. The "winner" tester is a tester type exclusive to games testing. The winner doesn't care about the quality of the product. He only cares about winning. A brief anecdote: Microsoft Game Studios has a team of dedicated gamers that they hire called the Recon team. The Recon team had been helping out with playbalancing "Age of Empires II." However, for over a month, one of the testers had cheats enabled. As a result, the month's worth of playbalance data generated from the Recon team had to be thrown out.

If you can think of other classifications of testers, please post them in a reply. I may do a second set if I get enough follow-ups.

November 14, 2004

My least-favorite "Halo 2" feature

While I love the fact that "Halo 2" is Xbox Live Aware, I hate the fact that if I'm playing a single player game and for whatever reason, I lose my connection to Live, it kicks me out to the main menu.

I have it even more when I'm in the middle of a boss battle and it happens.

November 12, 2004're a bunch of schmucks.

Microsoft settled a court case with Novell less than a week ago for $536 million. So what does Novell do with the money? File another court case against Microsoft.

Whatever happened to building your business by building superior products rather than trying to sue the frontrunner? Novell doesn't even own the products that they're suing about anymore. Does this mean that if Novell wins, Corel will follow suit using the Novell victory to carve out a chunk of Bill for themselves?

I guess that Novell is trying to pull a SCO and have litigation be their only source of income. It's a shame, too. I thought that their investments in Mono were a positive step.

Long Hours in the Video Game Industry

I just finished reading ea_spouse's blog entry about extremely long overtime hours at Electronic Arts. I thought I'd share my own examples of how things worked at Microsoft Game Studios.

One note here: At Microsoft, you have to be salaried for one year in order to be eligible for a bonus.

I started at Access Software back in 1998. When I started there, I was making $8.00 an hour, and was hourly. I averaged about 50 hours a week through the end of Links Extreme, and the worst bit of crunch was a single 78-hour straight push (Friday morning to Monday afternoon) for RTM. However, I was hourly, so I was being compensated.

Microsoft acquired us in April 1999, and I stayed at $8.00 an hour until August, when I went to ~$16 an hour and was salaried. Given the massive increase in wages, I didn't mind it at the time. However, I was placed at level 56, which is just above an entry level tester in Microsoft. We had several testers who were leveled "off the grid," i.e. one or two levels below entry level Microsoft. Most test leads are at least level 58.

Right after I finished work on "Microsoft Golf 2001 Edition," I was told that all level 56's who were salaried were being moved to hourly. I got my bonus, and a raise to $18.

The next year, because of my work on creating a source analysis tool for Xbox titles, I was raised to a level 57, and made salaried again. This time, I was up to $21 an hour. I remained at level 57 for the rest of my stay at Microsoft.

The next year, I went up to ~$23.50 an hour salaried. Usually during crunch, I'd work five 10-hour days and the occasional Saturday. We had a few dedicated testers who were still hourly who put in massive hours, but most of us worked in the 50-60 hour range during crunch.

My final adjustment occured when they said that all level 57's were now going to be hourly. This happened just before "Amped 2." I was moved to ~$24.50 an hour. I worked a few all-nighters, but I averaged 65 hours a week for the rest of my time at Microsoft. There were a few weeks that I worked 80 hours plus. A large part of the reason for my overtime was that I knew I was leaving, so I wanted a nice nest egg to help offset the massive cut in earnings I was about to undertake.

Now, at MGS, we didn't get comp time. We just got our regular vacation time, which we usually took when the product was over. However, our managers were usually pretty nice for at least a month after RTM. They'd let us work partial shifts, let us slack off at work, etc., for a few weeks after it was over.

While EA's public motto is "Challenge Everything," the feel I got when I spoke to EA representatives at E3 every year was "Win At Any Cost." Their disposable staffing solution (work 'em until they quit) can actually work in this industry. We have a wealth of programmers available for work as a result of the dot-com bubble crashing. Working on video games is a dream come true for my generation. EA can hire them, chew them up and spit them out and find a dozen more coders and artists begging for the chance for it to happen to them.

Don't get me wrong. I love the video game industry. Heck, I'm even considering going back someday. I know that extended hours are part of this industry, and accept that. However, I am a firm believer that one works to live, not that one lives to work. We must always remember that our employees have lives outside of their cubicles, and do everything in our power to ensure balance in both their personal and professional lives. Only then can we have employees at their peaks.

Dates and Decisions

I now have a date for a fairly significant event that I can't talk about yet: January 3, 2005.

I should make my decision by the end of next week.

Could I be any more vague? Possibly, but I'm under an NDA.

November 10, 2004

The Humbling Moment

Have you ever been going along feeling pretty confident in yourself and had a moment that just knocked you down about twenty pegs? I had one of those today.

While I'd like to blame the circumstances surrounding it, I can't. This humbling moment was my own fault, pure and simple.

What I did was I broke every single rule of interviewing known to man. I didn't get a good night's sleep, I sandwiched the interview between stressful meetings, I was stressed from trying to get caught up from taking yesterday off, etc. You name the rule, I broke it. So, it's my own fault.

I had an informational today, and about twenty minutes in, I started to space out. I couldn't remember simple things like "implementing an interface," or even the few FxCop rules I knew. Basically, I felt horrid when it was over. I felt like I had wasted his time and my own.

Things like this happen, and the important thing is to learn and grow from them.

November 9, 2004

"Halo 2" Mini-Review (Spoiler Free)

Dear Bungie,

I believed in you. I waited until midnight, picked up my copy, went home and got a good night's sleep. I took the day off from work so that I could play your magnum opus.

I popped in the game at 11:00am. I enjoyed the depth of the storyline. I enjoyed the fact that my AI cohorts were good shots. I enjoyed seeing things through Covenant eyes. I even managed to handle the fact that I didn't land the killing shot on the end boss.

And then I got to the ending. I haven't felt so betrayed since the ending of "XIII." Not only did I not have the rush that I had from the last six minutes of the original "Halo," I didn't even have any real closure in my ending. Even waiting through your credit crawl for the after-credit bit didn't help any.

So now I have to wait for several more years before I can see the true ending for the "Halo" saga. While I appreciate that you needed to ship the title and that you wanted to make "Halo" a trilogy, you really lost me with your choice of a stopping spot.

At this point, my only hope of closure in the near future is if you release your third installment as an expansion pack.


I was the 70th person in Layton to pick up my copy of "Halo 2" tonight. Approximately 300 of the 2,000 pre-orders showed up between 9 and midnight to get their copies.

That being said, it was the most mindbogglingly boring time I've ever had. Between security guards yelling at people to stay in a single file line for 3+ hours and Hot-Dog-On-A-Stick employees trying to talk people waiting in line into playing a game of Hot-Dog-Twister, it was horrid.

I'm not doing this for "Half-Life 2" next way in Hell.

November 8, 2004

How To Kill TV Media

Is your computer infected with the current scourge of the universe, "TV Media?" Are you preparing to install Windows XP Service Pack 2? Whatever should you do?

Well, first off, the steps I am going to talk you through may require that you be able to boot to a recovery console. To do that, you will need the original installation CD for Windows XP that came with your computer. If your computer manufacturer did not trust you enough to give you original install media, see if you can borrow a disk from a friend. I also recommend asking your local geek for assistance with this one.

First, try using the tool from here:;en-us;886590

That should work. If that doesn't work (it didn't work here), download and run this fix:;en-us;885523

Shut down and boot from the Windows XP CD. When asked what to do, hit "R" to go into the Recovery Console.

Select your Windows partition. (For 99% of you, it will be the line that says, "#: C:\WINDOWS".

Enter your Administrator password. (For 99% of you, it will be blank, so just hit ENTER.)

Type "CD SYSTEM32" without the quotes and hit ENTER.

Type "DEL MAD.DLL" without the quotes and hit ENTER.

Reboot and go into Safe Mode with Command Prompt. Once you login, a command prompt will appear.

Type in the following: CD "\Program Files\TV Media"
...and hit ENTER.

If you did not get an error message, type the following: DEL *.*
...and hit ENTER.

Hit CTRL-SHIFT-ESC to bring up the Task Manager, and tell Windows to restart.

Finally, run Ad-Aware to clean up the last remaining traces of TV Media.

And remember, kids, spyware is bad, mmm-kay?

"Halo 2" Midnight Madness

I managed to talk my wife into going to the "Halo 2" Midnight Madness thing with me tonight.

I'm looking at it two ways. First off, she'll be able to see that on the geek scale, I'm nowhere near as bad as a lot of the geeks out there. Second, when they start the sale, she can run down to the Sam Goody in the mall to pick up my copy of "Ai Yori Aoshi: Enishi" volume 3 so that neither of us have to leave the house tomorrow.

The only downside to tonight? She's making chili for dinner. So apologies in advance to anyone waiting at the Layton Hills Mall Babbage's tonight.

Davis/Weber .NET Users Group is a go!

I just finished my E-mail exchange with Ben Miller. The Davis/Weber .NET Users Group is a go! We've got space reserved for the first year.

The first meeting will be Wednesday, December 8, 2004 at the Layton City Main Offices.

If you live on the Wasatch Front, spread the word. We've got a large capacity room scheduled, and I'd like to see if we can fill it for the first meeting.

November 6, 2004

"The Incredibles" Mini-Review

I managed to sneak out of the house today to see "The Incredibles," Pixar's newest flick, and while it's an amazing movie in its own right, it feels completely different from any other Pixar flick made to date.

The animation and voice acting are top-notch as always. John Ratzenberger has a nice cameo at the end. A pleasant 60's superhero vibe plays through the entire movie. Jason Lee plays a perfect villian., although I kept getting "Freakazoid" flashbacks whenever he was on screen.

The movie is rated PG, and I'm assuming it's because this movie contains more death and destruction than all previous Pixar flicks and director Brad Bird's previous magnum opus ("The Iron Giant") combined. (By the way, I stayed through the credits, and there wasn't anything extra...sorry.)

If you're a geek, this is already on your must-see list, but I have to get in this one little jab at Steve Jobs. For all of the power that Apple claims to have, I found it rather funny that at during the end credits, a little credit went up saying that all final rendering was done using Intel chips.

Patent #4,734,690 Prior Art

I just read through the patent claims for patent #4,734,690. This is the patent that was purchased from Tektronix by a Texas-based firm that decided to sue every single company that used any part of it. This patent covers a method of translating a 3D image to a 2D image.

The patent was applied for April 6, 1987 and was granted March 29, 1988.

What was really funny about all of this is that large chunks of the algorithm are identical to the algorithm used to do the exact same thing printed on pages 296-398 of "The Art of Graphics for the IBM PC" by Jim McGregor and Alan Watt, which was first printed in 1986 by Addison-Wesley Publishers Limited.

Because of frivolous suits like this, lots of people believe that the patent system is broken and should be overhauled. Personally, I believe that the patent system as a whole works with some minor issues, so any changes should be minor and specifically tailored to fix the problem at hand.

The biggest problem nowadays is patent houses buying up patents from other companies and using this newfound intellectual property to sue other people who had been using the patent for years. Easiest solution to this problem? Don't allow patents to be sold or assigned in full, only licensed or cross-licensed. The reasoning behind this is quite simple. Patents exist to protect the rights of the original inventor for a brief period of time.

Software patents are broken as well, but it's going to take some time to decide what the smallest change necessary to fix them will be.

November 5, 2004

One downside to VoIP

We've been trying to track down a performance problem on our web server lately. When we test the server using a crossover cable, our server can serve up about 400rps. (Our old server could only serve up 300rps, so that's a pretty sizable increase.) We can serve up more than that, but our testing machine gets CPU limited at that point.

However, the moment that the server touches the network, we're lucky to get 50rps. So, what is causing this massive drop in performance? Cisco QOS.

We recently went to a VoIP phone system. It's a lot cheaper to maintain than a POTS or PBX system, and it makes it easier for our public safety guys to record all of the lines that they are legally required to, as well as to retrieve those records.

Cisco's QOS has seven levels for the QOS, with the higher the level, the more important the packet. Voice packets are higher priority than data packets, so anything VoIP-related takes higher precedence than data requests.

For us, we made the decision to share the same network for VoIP and data. Due to the QOS stuff, the more phone traffic we have, the slower our system goes.

Our calls outside of the offices use up about 32Kbps, but calls inside the offices use 160Kbps. Each phone also uses a chunk of bandwidth every 30 seconds that there is no call. If you are planning on migrating to VoIP and want to share the same fiber, do some load testing on your network and ensure that any necessary business services will not be affected by the addition of several high-load devices.

Government and .NET

I've been thinking a lot lately about the role of government from a technical perspective.

Internally at the city, we run Windows. We have a massive amount of software that needs to be written. We also have a very small development staff. Because of that, we picked the .NET Framework for our development needs. Because we look in the Framework before reinventing the wheel, our average development cycle on a tool is about eight weeks.

However, we've been preparing to release some software to the public, namely a real-time mapper component for our town. I developed the core component in five days in my own time as a lark, but it worked well enough that we've integrated the component into almost every project here in the city. And we're releasing it for Windows only.

I can hear the open-source zealots screaming, "Why are you ignoring your Linux users? Why are you ignoring your Macintosh users? Why are you ignoring your FreeBSD users? Why are you telling people that in order to use your service, they have to pay money to a monopolist, etc., etc." I can explain quite easily.

First, our stats. We use AWStats to gather statistics on the visitors to our website. While not an ideal way to gather operating system usage statistics, given that we are a local government entity, it is safe to assume that we will be getting an accurate cross-section of our computer-using citizens.

As of 8:09am this morning, Windows was at 95.9%. Macintosh held 1.1%, and Linux and FreeBSD were both on the list with 0.0%. (Update: This means that Linux and FreeBSD each had only 1 visitor. Due to the level of traffic on our site, the single visitors were not enough to be statistically meaningful.) The remaining 2.8% are search engines and tools that we use internally.

Now the zealots are going to yell, "What about Mono? Why couldn't you write the tool in Mono? That way, you'd also be supporting a Utah company (Novell)." We code in Visual Basic .NET here at the city, and until Mono has their Basic compiler functioning, the ROI isn't there for us to port it to Mono/C#.

Now the zealots are going to yell, "This is a vicious cycle. By only releasing software for Microsoft products, you are reducing our ability to compete, because when people see you release software for Microsoft products, they'll buy more Microsoft products, etc." Let's say I did release a Linux version. The Mac guys could make the same argument about me utilizing the x86 architecture. "It's not fair that I don't also support the PPC..."

As much as we would like to believe that government exists to ensure the rights of all citizens, occasionally governments have to not serve a portion of their community. We have a portion of our citizens who do not want flouridated tap water. We have a majority who do. In this case, we are serving the majority. The minority who do not want flouride can go buy bottled water if they want to.

It's the same with our software. We are serving the needs of the majority. Those in the minority can buy other mapping packages if they want to, or use a free service like MapQuest.

Government is like the original Ford. You can have any color car you want, as long as it's black. Once every election cycle, the people as a whole make their choice. Our role is to fulfill that choice. As for software, people make their choice with their pocketbooks. When 95.9% of your customers are telling you something, you listen.