December 25, 2008

Christmas Morning Math Pun

Mathematicians like talking about their former partners but they don't like talking about why they broke up.

It's a classic case of the ex over the why.

December 20, 2008

Feel-Good Education

I've always had an issue with "feel good education." You know, nobody fails, everyone always succeeds, feeling good about yourself is more important than results, and so on.

It is difficult to state the arguments against "feeling good" in a cohesive manner, but one rational mom has.

December 19, 2008

Cryptic clues...

Because of this...a start while I scribble the rest down.

Her pod split into four parts. One part was found in game, two were found elsewhere (one by Blade) and the fourth part was never found but the contents were in front of the player for a large part of the game. A single bullet was at fault.

There were two different substances for two very good reasons, but there were two of one separate people working at cross purposes.

Radek survived...again.

December 14, 2008

The Universal Language

During this Holiday season, we reflect on our lives, our families, our communities and our world.

Despite all of our differences, there is one thing that all humans share...the language and love of music.

December 12, 2008

WORKAROUND: ASP.NET "Response filter is not valid."


ASP.NET 3.5 web site. You are trying to set the Response.Filter property and you are getting an HttpException with the message "Response filter is not valid."


There is a bug in ASP.NET 3.5 where you cannot set the Response.Filter property unless you read it first. When the Response.Filter property is first read, it instantiates some internal fields in the HttpWriter class.


Just read the property first so that it initializes the internal properties accordingly.

In VB:
Dim f = Response.Filter ' Assumes Option Infer On
Response.Filter = New FilterStream(Response.OutputStream) ' Where FilterStream is your stream
In C#:
var f = Response.Filter;
Response.Filter = new FilterStream(Response.OutputStream);

December 8, 2008

The Schedule

I spent about three hours today doing a functional decomposition and schedule pass for a new project I have going on that is due on March 11, 2009.

I didn't have enough information left to properly estimate work on about 10% of the tasks, but I have good figures for the rest. I put in work estimates in for the other 90% in a column in Excel next to each work item and let it sum up at the bottom.

It worked out to just enough work to be done on March 11, 2009.

There is still 10% of the work unscheduled.


That doesn't include testing time, stabilization, integration, dependencies on third parties, user testing and approval, documentation or training...just the development work necessary.

I have a feeling I'm going to be working a lot of overtime...a bit more considering that I'm also going to be moving next month.

December 5, 2008

Workaround: Ektron CMS400 7.5 Integrated Editing Breaks After Upgrade


Your ASP.NET website is in a nested virtual folder underneath your Ektron CMS400 installation folder. For example, your Ektron 7.0 install folder is /CMS/ and your website is located at /CMS/Website/.

After upgrading to CMS400 7.5, integrated editing no longer works. You no longer get the green border or the white editing bubble.


The session cookie for the CMS no longer matches the session cookie for the site.


Create a page on your site that contains three things. One, an IFRAME pointing to the login.aspx file in your Ektron CMS400 folder. Two, a button that calls in order in the code-behind the functions Session.Clear() and Session.Abandon() in that order. (I've tried them individually, but for some reason, it takes both of them for this to work in my testing environment.) Three, a link back to the home page of the site you want to edit.

Log into the CMS through your IFRAME.

After logging into the CMS, click the session kill button.

After clicking the session kill button, click the link back to the home page.

You'll have your editing environment back.

October 28, 2008

PDC2008 Day 0 & 1 Recap

PDC2008 Day 0 consisted mostly of reacclimitizing myself to the LA Convention Center and a six hour session on Silverlight from Jeff Prosise (pronounced like precise, but with a pro at the start instead). I learned a lot of things that really explained some of the goofy corner-case problems I ran into. I'll be doing some posts this weekend summarizing all of what I learned this week.

Day 1 was strange from beginning to end. During the Windows Azure keynote, I was seated next to a transvestite Dutch reporter who was wearing fishnet stockings. Stranger things have happened.

First session was supposed to be a deep dive into the IE8 layout engine, but it ended up being more of a design pattern overview. Fascinating, but generally useless talk.

Next was the Expression Blend Tips & Tricks course, of which two tips were excellent, one didn't work in the demo, and then time ran out. That said, there was one wonderful tip. If inside Blend you are getting broken XAML (Blend can't render this blah blah) and the exception you are getting isn't giving you any information, close the XAML form, open the project in Visual Studio from Blend, attach Visual Studio to Blend, and reopen the XAML in Blend. The exception that is thrown will be caught by Visual Studio and have significantly more information. If you are using things like HtmlPage in your Silverlight code-behind that don't exist within Blend, this will help out.

Next was the ASP.NET 4.0 Roadmap and it was great hearing how about 80% of the existing pain points are going bye-bye, although it sounds like some of the cures will be worse than the disease (like the caching system redo).

From there I headed to the expo floor to try to get a lot of information from vendors I am going to have to be dealing with over the next six months. Ektron let me know that 7.5.4 is on track for the end of November and should fix the nested application issue. ComponentOne has their lighter ASP.NET components coming out around the same time.

Finally ended the day with the Framework Design Guidelines class. It was good hearing that most of the plans I had for our site code revamp matched up with the guidelines, but after hearing the talk, I'm going to be rewriting some parts because their explanations really explained why I shouldn't do things the way I was going to do them.

Well, better go. I'm sitting about eight rows back from the stage at keynote #2 of 4 and I'm afraid that the Dutch transvestite is stalking me now.

October 25, 2008

Rough PDC Schedule

This is a rough recap of my schedule for the next five days. If you are going to PDC or live near downtown LA, let me know. Contact me at romsteady -at- gmail.

  • Creating Rich Internet Applications with Silverlight


  • Keynote
  • Deep Dive: IE8 Renderer
  • Expression Blend Tips & Tricks
  • ASP.NET 4.0 Roadmap
  • Framework Design Guidelines


  • Keynotes 2 & 3
  • Coding4Fun
  • SQL Server 2008 Business Intelligence and Data Visualization
  • ASP.NET Deployment
  • Silverlight Optimization


  • Keynote 4
  • Parallel Development for Managed Code Programmers
  • XNA
  • .NET Application Performance/Scalability
  • ASP.NET for Server Core
  • Architecture without Big Design Up Front


  • RESTful web services using WCF
  • ASP.NET Caching or Silverlight Control Model...haven't decided yet
  • Designing Apps To Scale

I'm leaving straight from the LACC on Thursday to head to the airport so I can get home. I'll be walking in my door sometime between 12:30a and 1a, and I have work on Friday as well.

This is going to be an exhausting week. That said, the above schedule is subject to change.

October 18, 2008

Lost E-Mail

Due to a server configuration issue, all E-mails sent to my E-mail address since October 9 have been lost.

If you needed to get through to me, please re-send your mail.

October 16, 2008

Locked Down

I've been here in Washington, D.C. since late Sunday for training, and I've been restricted in the systems I can use.

At the hotel, the wireless connection is unreliable at best and inaccessible at worst. At the training center, we're running on locked-down desktops running Windows Server 2003 Standard Edition and Internet Explorer 6 in high-security mode.

I wish I could say I was surprised at how much of the Web just doesn't work in this locked-down scenario, but I'm not.

AJAX is gone. Basic JavaScript is gone. Pop-ups (thankfully) are gone. Basic functionality (like ASP.NET hyperlink postbacks) can even be gone at times.

Sites that have the login prompt hidden by JavaScript (like Shacknews) are unusable. Functions that completely rely on JavaScript (like the directions functions over at MapQuest) fail.

It is definitely reminding me that when I am architecting our new system for release next year, I have to ensure that I have fallbacks in place for those poor unfortunate souls who are chained to neutered browsers.

October 2, 2008

How To Blog, Er, Break Software

Dr. James Whittaker, author of the invaluable QA training resource How To Break Software, has been working at Microsoft for over two years.

I just now found out that he has been blogging.

I really need to get back into QA a bit more.

September 30, 2008

Trace Back To The Beginning

When testing, you always take a step back and look for the root cause of the problems you are facing. Is the performance problem I'm seeing caused my allocation patterns, memory load, the wrong algorithm being used, cache misses, extra shader passes where none should be, etc.?

It's also handy to go back and search for root causes for things outside of software. For example, the root causes for the current financial meltdown (easy credit) predate the current administration to the Clinton administration and banks combined pressuring Fannie Mae and Freddie Mac to reduce their lending criteria. The reasoning seemed relatively sound but the execution wasn't, and the lack of oversight led to things crashing around our heads.

I'm all for bashing Bush...he's a horrible president, an inept commander-in-chief, and a pathetic excuse for a human being. But credit should go where credit is due.

September 26, 2008

Divorcing Yourself From The Past

There was a discussion today on the Shack based on my previous two blog posts. Specifically, the concern was that these two people are going to be marked for a long time by their crimes because the Internet doesn't forget.

It is a valid concern. While people have memories that fade, bits last for a long time.

My personal stance regarding the two individuals in question is that there are three ways that you can approach an embarassing situation from the past.

One, you can do nothing about it and let the memories fade. Search engines are driven by links, and the fewer recent links you have, the less likely that it will show up on top.

Two, you can incorporate it into your identity. Hell, I'm embarassed about several actions I took back in 2006 and before, but I own the decisions I made. I've incorporated them into who I am online and I take responsibility for my past. My boss knows both the good and the bad and knows from how I have handled the situations that I am a man of strong convictions and a fairly steady moral compass.

Three, you can fight back. Fighting works well when it is something that you didn't do, but not so well when it is something that you did. Take a look at Michael Crook. He was embarassed by an appearance on Hannity & Combes that resurfaced and he fought back using every tool available to him...and several that legally weren't like DMCA reports. The end result...further humiliation.

Internet humiliation is like a Chinese finger trap. The more you fight, the worse it gets. Flow with it or live with it.

Chris Hyman: Profane Whiny Warez Monkey

Just had a comment from Bruce Everiss on my previous post with another E-mail from another warez monkey that fell under the wrong end of the legal hammer...
From: Chris Hyman
To: bruce
Sent: Friday, September 26, 2008 5:05 PM
Subject: Remove my name you fucking bitch

Yeah, FUCK YOU Bruce you piece of shit. Remove my name "Chris Hyman" from your stupid ass fucking blog. Your blog is a piece of shit and you are one FUCKING UGLY OLD MAN!

FUCK YOU! GO TO HELL! I hope you die and burn in hell!

Oh, just letting you know I am getting my lawyer ready to sue you for copyright on my name. :) Prepare to be served and sued. Oh, and I will be getting damages from it. The money will start at $10,000. Who knows, I'll probably sue you for everything you got you fucking ugly ass.
Well, Chris, same comment applies. You did the crime, admitted to it, and are lucky that you are getting away with only having to pay the civil penalty.

And come on, threatening to sue someone in a different country for violating copyright on your name? First off, your name doesn't have a copyright on it. Second, he's posting information that is publicly available from a court case. Third, he's in the right. You did do the crime. Your actions, while they may not have directly affected him, do affect his industry as a whole.

You did wrong. You got busted for it. Man up and take it.

September 25, 2008

Shawn Guse: Whiny Warez Monkey

Some of you may have seen that Activision went after some pirates recently. Based on some follow-up comments from Activision's lawyers, my assumption is that these guys modded their consoles and created the original ISO rips of certain Activision products and/or created the original torrents used to distribute the rips. Mind you, that is my assumption and may not be fact.

That said, these guys have agreed to settlements that restrict their future behavior...and now at least one of them is trying to erase the evidence of his crime from the net.

Now, this is a civil settlement, but the settlement does contain an admission from Shawn Guse that he committed a crime.

Consider your name being linked to the crime a part of the punishment.

September 20, 2008

Review: "The Who's Tommy" (Dallas Theater Center)

Back in 1969, The Who released Tommy, a concept album which was an adaptation of the life of Meher Baba, a man who was later immortalized in the single Baba O'Riley.

By 1975, The Who were pretty much sick of Tommy, and when approached to do a film version, the band decided to just sell out and go with it so they could get some final cash from their work and be done with it (hence the reason they are seen as the backup band for Elton John in the film wearing suits made of pound notes).

By 1990, Pete Townshend had gotten over his angst and worked to create an official musical adaptation of the rock opera which gave rise to The Who's Tommy. With the addition of just a couple of dozen lines of dialogue and very minor changes to lyrics, they managed to transform the concept album into a musical filled with nuance and subtext and a compelling storyline.

When I heard that a regional production was going to start up, I was thrilled. I managed to see the original at the St. James Theater in New York back in 1994, and I had missed the previous travelling productions, so I was anxious to see it again. After looking at the promotional materials and seeing it was being promoted as the La Jolla production instead of one of the previous unauthorized iterations, I was stoked. I bought the best seats in the house (4th row center), we arrived at the theater on time and I was the first one through the door.

The stage was rather different than I expected. A pinball machine was mounted in the middle of a hole atop a raised stage. The band was in the middle of the stage, which looked like a gothic dock in the middle of a bombed out city. No mirror to be seen.

The Playbill showed an ethnically diverse cast, including an African-American Tommy. I was actually okay with that. The cast back in 1994 was extremely white-bread.

The play started with Captain Walker (now an American soldier) being taken hostage by a terrorist cell in Iraq. Again, I could see shifting the play from the U.K. to the U.S. and even shifting it to modern day. I thought the director was keeping it topical, but I was a little disappointed because I felt that England itself was really a character in the original production.

As time went on, I started to get worried. They cut dialogue, rearranged songs, and had senseless lyric rewrites. The reason the stage was raised was that they started to fill the bottom of it with water. I was confused...this wasn't the play they had marketed, but I figured they were trying to trim some time to keep from having to have an intermission and were just trying to make it work. Eyesight for the Blind changed from a pimp pushing his hooker to a Pentacostal preacher and his faith healer and the father and mother just handed their child over to the Acid Queen/hooker.

After Go to the Mirror! and a great performance of Smash the Mirror, Mrs. Walker threw Tommy into the water to "break the mirror." Tommy gets up, sings Sensation, has a pointless Sally Simpson exchange, forms a cult, puts everyone in sensory deprivation helmets and gets shot by The Man.

Now, I could see that the artistic director wanted to make a statement, but I could also tell he had no idea what statement he wanted to make. He tried so hard to make any statement that he essentially gutted the intent of the original work. He turned a story about redemption and forgiveness into a revenge tale that basically says that if a black person gets too uppity and reaches beyond his established station that they will be gunned down by The Establishment. That message was reinforced by the theater company representative in the after-show discussion.

The cast was extremely talented, the choreography was dead on, and there was definite energy from all involved. It just wasn't the Tommy that was promised and promoted.

September 15, 2008

Itinerary For September, October

Just as a heads-up, I'm not going to be available for much between now and October 1. I'm helping a former Ritual co-worker out with a project.

Also, I am going to be in Washington, D.C. from October 12 through October 17. If you are in the D.C. metroplex and want to do dinner some night during that period of time, let me know.

I'll also be in Los Angeles from October 25 through October 30 for PDC 2008.

September 11, 2008


Again, forgive any formatting anomalies. Typing this on my BlackBerry on my way into work.

I can now blame my wife, and tangentally Microsoft, for my hard drive failure. I should probably explain...

I bought Viva Pinata over the summer to give my granddaughter something she could play on my Xbox 360 while she was here. While she did enjoy it, it was my wife who got extremely infatuated with it. She has been playing it nearly non-stop for the last six weeks to the point where she has been shirking her responsibilities even more than usual.

One thing she has been doing is putting the laundry off until the last possible minute so she can squeeze in more playtime. She gets the laundry loads ready late at night and sets them by the door so they can be started in the morning. My computer is also by the door. I keep it there because it is cooler than the rest of the house and has great airflow. The clever ones out there know where this is going.

I had an MSDN download going last night so I left my machine on when I went to bed. When I got up this morning, my PC was off. Since I didn't have it set up to automatically shut down, I immediately got worried and restarted my computer to check for damage.

Everything looked fine, but the fans sounded like they were working overtime so I took a peek down at the tower.

Laundry from the overflowing laundry basket had blocked all of the fan ports. Within ten seconds of pulling the clothes away, the fan volume level returned to normal.

I am going to have to move my PC tonight to keep this from happening again. I am also going to have to stock up on non-perishable food. My wife bought Viva Pinata 2 and wants to start it telling what will fall through the cracks then.

September 10, 2008

Back to (Visual) Basics

One of the things I've been doing at work for the last twenty months is putting a constant stream of patches on an in-house member management system (MMS). The best way I can describe it is imagine living in a house made entirely out of paper towels. You spend a lot of time shoring up areas that have been stable in the past, you find tons of new leaks on a regular basis, and all in all it isn't an ideal situation.

That said, I have been able to make the best of things. I got a raise, promotion and an award from work for my work on the system to keep it afloat.

Fortunately we're getting ready to move over to a new MMS next year, however, and our new MMS is going to be 100% Visual Basic .NET, specifically Visual Basic 2008.

Now I've been working in C# for the last two years and making the shift from C# back to Visual Basic is causing a bit of a mental break, but in a good way. I find myself turning off most of the VB "helper" functionality and being more deliberate in my coding style. I'm finding that I'm making better code for the most part because of what I had to do in C#.

The sad thing is that there are still some issues with the new code as received. Just based on the security holes I found in my initial code review, I expect to be spending at least six to eight weeks sealing up some of these holes while we are doing our customization work, but I'd rather spend eight weeks doing it right than two years doing it piecemeal. Even so, I found eight SQL injection attacks in fifteen minutes...what the Hell?

After all, I like my job, but right now I have to be here. I'm pretty much the only one who knows the existing system inside and out and if I leave, the secession plan is pretty much to bring on a contractor, let him spend six weeks getting used to this system, and then proceed with what needs to be done.

My goal with this project is to get the system to the point where I don't have to be here. I want to be here because I want to be here.

It's a subtle difference, but extremely important to me.

September 5, 2008

Data Recovery Disaster

Forgive any formatting issues...I am writing this on my BlackBerry as I head into work.

Awhile back, I had a catastrophic system failure and lost a lot of data at home. Digital photos, my CD and DVD rips, source code...I lost a lot.

After that, I promised myself I wouldn't get burned again, so I bought myself a 500GB Western Digital MyBook and set it up as a backup drive. Every Thursday night as I would go to sleep, I would plug the drive in, start the backup, and it would be done by morning. Once a month, I would test the backup to ensure all was well.

This process had already saved me twice over the last year and so I was happy with it...until this morning.

I started the backup last night and when I woke up this morning, I noticed my computer was off. I turned it on and heard the clunk of death from my data drive, but my PC still booted. Booting made me feel better because that meant I just had to replace the drive and restore the backup.

I checked the backup logs and they said the backup completed prior to the power outage and I felt even happier.

I turned on the backup drive so I could quickly verify the backup before running to Fry's later...and there was no data on the drive.

A quick restore of the partition table and a reboot shows me a corrupted root directory.

Needless to say, I am not happy. I have most of the critical files backed up to DVD, but it sucks when your failsafe fails.

August 19, 2008

The Numbers Underlying The Numbers

The PC Gaming Alliance has come out swinging saying that PC gaming is doing far better than anyone expected. In some ways, they are right, but it's all in the interpretation.

Industry total for the PC is $10.7 billion, which by itself looks astounding, but let's break it down.
$4.8 billion is online gaming/MMO revenue, which leaves $5.9 billion.

$800 million is advertising sales, which leave $5.1 billion.

$2 billion is digital distribution, which leaves $3.1 billion for retail sales worldwide.

For that same period at retail in the United States alone, the Xbox 360 sold $4.8 billion in software only, the Wii sold $3.5 billion worth, and the PS3 sold $2.2 billion.

So there is some positive news...the global PC game market is healthier than the U.S. PS3 game least at retail.

Just remember that this is worldwide sales, not U.S. only sales. Back in 2006, PC retail in the U.S. was only $970 million...only a 1% increase over the year prior. For 2007, it dropped to $910 million.

Remember, it always pays to check the numbers when people make claims.

August 15, 2008

DBML Not Backwards Compatible

If you are planning on upgrading to Visual Studio 2008 SP1 and you are using LINQ, make sure your entire team upgrades to SP1 at the same time.

While DBML is forward-compatible from 2008 to 2008 SP1, they are not backwards-compatible, meaning if you make a change to a DBML file in a project, that project will not build in 2008.

The compile will fail with this error:
Build failed due to validation errors in [path]\[file].dbml. Open the file and resolve the issues in the Error List, then try rebuilding the project.
When you look at the output, it will tell you that O/R Validation failed with an unknown error.

August 14, 2008

Real-Life Bugs: Proofread Your EULA!

Axialis really needs to proofread the EULA's that they attach to their products.

Update 7:45pm: I just heard back from Axialis and this has been fixed.

August 13, 2008

I Have Nothing To Say

Really. I've got nothing to say.

I'm out of industry anecdotes. Dental surgery isn't worth discussing.

My wife has commandeered the Xbox 360 so those of you who have been seeing several hundred hours of "Viva Piñata" on my Xbox Live account haven't been seeing me.

I can't think of advice for testers which is why I haven't written any more over at Game QA Blog.

I want to get to Vegas sometime before September 1 so that I can get to The Star Trek Experience one last time before it closes, but it isn't going to happen. The money that could have gone towards paying for my trip went towards my teeth instead.

Hell, I turn 34 this Saturday and all I can think to say is "meh."

I've got plenty of energy for work, but not so much for me. I've got 13 days of vacation time right now at work. I guess I'll try to take some time later this year to recharge my personal batteries.

July 16, 2008


I've been working from home today while getting used to a painkiller I'm going to have to take for the next three weeks.

I have an impacted wisdom tooth that became infected, so I'm taking antibiotics to get rid of the infection before my surgery on August 7.

I'm not exactly happy or pain-free, but at least it will all be taken care of shortly.

July 9, 2008

Fail: Research in Motion

The .jobs TLD has been approved, and Research in Motion was one of the first companies to actually sign up.

Guess what their employment URL is now?

Really. Try it.

July 6, 2008

The Jefferson Bible

There is an interesting article over at the L.A. Times about some activities by one of the more secular-minded founding fathers, specifically Thomas Jefferson.

I knew that most of the Founding Fathers were deists, but I didn't know that Thomas Jefferson took scissors to a bible and using paste and a journal made a 46-page rendition of the bible as he believed it. (Thanks to Pharyngula for the link.)

If you want to read what he felt was important from the bible, check it out. The Jefferson Bible is available online. (Make sure you have a decent pop-up blocker.)

July 1, 2008

Happy Birthday, ToNS!

One hundred and fifty years ago today, the Theory of Natural Selection was first announced to the public.

Since then, the theory has been refined, reinforced through genetic evidence, and has become the keystone to modern science.

We owe a great debt to those who could make the mental leap from the intuitive answer to the logical, graceful answer that we have today.

June 22, 2008

Freshwater Defense

For those of you who have been following the pending dismissal of a teacher from the Mount Vernon School District in Ohio, the defense has been revealed...he was just "teaching the controversy."

Evidently, burning crosses into the arms of your students is one way of doing that.

This whole thing reminds me of a quote from Martin Luther:
Reason is the greatest enemy that faith has; it never comes to the aid of spiritual things, but more frequently than not struggles against the divine Word, treating with contempt all that emanates from God.
Given that mindset, is it any wonder that science is under attack from religious zealots?


For those of you who want to do managed code games but do not want to use XNA for whatever reason, the 1.0 release of SlimDX has been released.

The feature list for this release is fairly impressive: DX9 and DX10, XAudio 2, and more.

Check out the documentation. It's not as strong as the Microsoft documentation is for some of their API's, but it is similar to the level of documentation that was available for Managed DirectX.

June 13, 2008

Why Care About Creationism?

Go watch this video. Go on. This post will still be here when you get back.

In the past, religion managed to convince people that the only truth was contained within its holy texts and anything outside of that text was heresy. As a result, science, technology and society went into a thousand-year tail spin.

We see the same threat today with the fundamentalist evangelicals and their push to supplant science with their religious tenets. Dangerous evangelicals like "Dr." Kent Hovind and Ken Ham push blatant falsehoods tinged with religious fairy dust to poison the minds of students so that they can reap the power that comes from being an "authority," while places like the Discovery Institute poison the minds of school boards and governments in an effort to reduce the effectiveness of our science teachers.

We should not allow the world to slip into a second Dark Ages. One only has to look at modern day Islamic culture to see what happens when religion stifles science.

June 11, 2008

Creationism in Europe

I wish I could say that the creationist uprising was a uniquely American situation, but I can't.

Look at this partial list of the shit happening in Europe.

Creationism in Louisiana

I have to give the creationists some credit. After their defeat in Dover, they have come up with a very interesting backdoor that even managed to get unanimous approval from the Louisiana State Senate.

They are no longer claiming that Intelligent Design is science. They're claiming that keeping their non-scientific viewpoint out of schools is "viewpoint discrimination."

Here's the catch,, by default, discriminates against all viewpoints equally. Asserting a viewpoint without evidence and without experimentation automatically disqualifies your statements as not being science. Once you have some research to back up your viewpoint that can be torn apart by others via peer review, then you are getting somewhere, but the Intelligent Design crew don't even have that.

In the Dover trial, one of the Intelligent Design proponents said that they had an experiment that anyone could run that would lend credence to their hypothesis. (It is a hypothesis, not a theory.) They were asked if they had run their own experiment, and the answer was no. Meanwhile, we have laboratory proof for evidence popping up all over the place.

So what should we be teaching our children? If we're going to teach controversies, let's start with denying the Holocaust since four times as many historians deny that the Holocaust happened than biologists deny evolution, even though it was well documented by the perpetrators of it themselves. Then instead of geology, let's teach the Young Earth Theory, stating that the earth was created in approximately 4,000 BCE, even though we have historical evidence going back far beyond 10,000 BCE. Instead of chemistry and atomic theory, we can teach about the classical elements instead because they are believed by the Hindus, Buddhists, Wiccans and others. Instead of psychology, we can teach Scientology instead.

It is sad to see evolution getting attacked because it is the science that ties almost all other modern scientific disciplines together. Because of evolutionary theory, advances in genetics can be applied to immunology, molecular biology, anatomy and more.

When advances in Intelligent Design/Creation Science/whatever name it will have next week apply to anything other than ignorance of the scientific method, let us know. In the meantime, if you are in Louisiana and want to help fight this bill in the 11th hour, here is all the information you need, including a wonderful analysis of the bill itself.

Code...Exciting and New

We're currently going through a RFP process for a replacement integrated system at work.

I've briefly spoken about our current system in the past. Our current integrated system isn't exactly the best piece of software on the face of the planet. I've spent most of the last year and a half cleaning the code up and trying to stabilize the base.

Our existing system does a lot of things like rely too much on session state, pass around ArrayLists of information instead of strongly-typed structures or objects, little to no code reuse, nineteen different ways of doing the same thing (often on the same page) and so forth. It's the code equivalent of Frankenstein's Monster.

I've managed to get the code to the point where it is manageable, but there are still times when I have to wade into sections of code that leave me feeling wounded afterwards. I may not care if code is beautiful, but when code is ugly, it hurts.

As we near our final choice for our new system, I find myself feeling a sense of relief and excitement. Relief in knowing that my days of wading through illegible code and being traumatized by side effects are relatively numbered, and excitement in knowing that we will be starting from essentially a blank slate. It will be a fun architectural challenge to build a properly extensible scaffold on top of the new system and integrate our business rules and user requirements into the new system.

Admittedly, we're looking at a 9-15 month implementation window, but the final destination is in sight: a codebase that won't leave me feeling unclean after working in it.

June 8, 2008

Anti-Game Talking Point

Watch out, fellow gamers...the next incident that will be spun with an anti-gamer spin has occurred in Tokyo.

TOKYO, Japan (CNN) -- A man ran over a group of people with his truck and then stabbed 17, killing at least 3, in a video game district of downtown Tokyo Sunday afternoon, according to a Tokyo fire official.

Rescue workers from the Tokyo Fire Department gather to help the injured in Tokyo's Akihabara district.

Three men -- ages 19, 47 and 74 -- were killed, according to a Tokyo metropolitan police officer.

Two others were critically wounded, police said.

Japanese media reported that the suspect told investigators he was 25 years old.

June 4, 2008

Guest Post #3 Is Up

Do you know any poison testers? If so, how should management deal with them?

I actually felt a bit weird writing this one because a big reason why I feel I failed at Ritual was because I didn't follow a couple of pieces of my own advice. Hindsight may be 20/20, but a pain in the ass is forever. ;)

June 2, 2008

Jindal for VP? I Hope Not

Louisiana Governor Bobby Jindal has been mentioned as a possible vice presidential candidate on the McCain ticket. I'm hoping that this isn't the case.

It isn't because I don't like his economic policies or the balance he would bring to the ticket. It's because his government in Louisiana has been violently anti-science after running on a highly religious platform. For example, the Louisiana Science Education Act essentially says that while the state has to teach the text they are provided, if a local neighborhood disagrees with the lessons, the State Board of Education has to help the local school board create a curriculum that tears apart the current theories.

It essentially equates free speech and scientific research, and the two are not equal. I can say that I believe that life was created when the Flying Spaghetti Monster touched the world with His noodly appendage or that I believe that a God of some sort created all of creation in a single workweek with only eight hours overtime or that the world was created by a giant sneeze from the Great Green Arkleseizure, but that isn't science. That's dogma. I'm all for teaching comparitive religion classes in schools because we do live in a world where some knowledge of world religion is not only valuable in order to understand literature and history, but also necessary because ignorance of religious practices in other countries can lead to you being viciously killed or thrown in jail for prolonged periods of time.

We've already had eight years of a president who has thumbed his nose at the scientific community and who has injected a religious viewpoint into policy. As a result, we have abstinence-only education which isn't properly serving the needs of children, a government that with one hand has doubled the budget of the National Institutes of Health and made a nominal increase for the budget for the National Science Foundation has at the same time distorted or suppressed scientific findings that don't support their policies, an administration that rejected calls by the Center for Disease Control and Prevention to strengthen regulations related to lead poisoning and replaced scientific panelists with members with ties to the lead industry, and more.

I'm an economic conservative, but when it comes to social issues I find myself quite liberal, and if it looks like science is going to be given the shaft for another eight years and further erase America's edge in scientific progress, then I'll have no choice but to side with the Democratic party on this election.

June 1, 2008

A-Kon Day 2

I've uploaded all of the images as a 44MB ZIP file.

It includes some pictures of the Guinness World Record attempt.

In this linked shot over at Flickr, I'm in the middle left facing the camera and my wife is the one with the Sims jewel in the background. I went as "Pong" to do my part. My props are on the ground.

I wasn't planning on doing any sort of cosplay at the convention because it just isn't my thing, but the props were easy to make and it helped solidify the record attempt, so it was worth it.

May 31, 2008

A-Kon Day 2 Delayed

I'm still going through the pictures I took today trying to get rid of the crap, plus I have about an hours worth of work I have to do tonight.

Here's a preview picture to hold you off.

May 30, 2008

A-Kon Night 1

Wasn't able to get into Anime Hell due to capacity concerns, but I did get three more pictures, including the only Tenchi cosplayer I've seen this con.

A-Kon Day 1

Better look out, Strawberry Shortcake, or American Greetings will sue your ass.

Plenty of pirates this year. I consider this a representative sample.

The pre-registration line never got shorter than having about 1,000 in line at once. There were 2,500 in line at the peak last night.

Video game characters are the order of business this year due to an attempt at a Guinness Book World Record tomorrow.

Webcomic authors were out in force. The Applegeeks guys forgot to bring change...

And even though most of the visitors of Shacknews really don't seem to like VGCats, the creator is taking it in stride...

This picture was taken just moments before Shinichi Watanabe's Japanese afro kicked my ass.

A few other costumes...

May 27, 2008

"Indiana Jones and the Kingdom of the Crystal Skull" Mini-Review

I managed to get out and see "Indiana Jones and the Kingdom of the Crystal Skull" yesterday, and while I thought it was better than "Temple of Doom," it wasn't better by much.

To be fair, it isn't the fault of the actors. All of the primary stars gave stellar performances. Even Cate Blanchett, who is reduced to playing Generic Russian Bitch #12 due to the storyline, is able to pull off a decent performance. The special effects were decent, there are some nice miniature sections, and the script stayed true to the characters.

The main problem is the myth they decided to tackle. Movies like this work when the back story is well established and generally integrated into our communal consciousness. "Raiders" and "Last Crusade" work because they ask us to imagine for a moment that the legends behind Judaism and Christianity respectively are literally true. While the legends that "Crystal Skull" ask us about are less than sixty years old for the most part, they're still enough out there that we can start to see it. "Mola Ram" was just pulled out of Lucas' ass.

It's still worth seeing just for some real closure to the series, but as long as you go in expecting a big screen version of a TV episode of the Indiana Jones chronicles, you won't be disappointed.

May 26, 2008

Guest Post #2

My second guest post, "Lessons from Car Salesmen," is now live at Game QA Blog.

I need to ask Zach if he really has a trademark application out for Game QA Blog...

(Update: Copy/pasted incorrect URL initially.)

May 24, 2008

Errors of the Past

One exercise I've been going through over the last few weeks while I try to get myself back into a QA mindset is I've been going over my actions back when I was QA Manager at Ritual (20/20 hindsight and all that) and trying to figure out what I screwed up. I know I've made plenty of mistakes, but you have to be able to identify errors that you've made if you want to advance.

My biggest issue is how I've dealt with the public. I violated the number one rule of public relations: Never draw attention to yourself unless you are selling something.

For example, while I was not in error as far as bringing out additional data regarding technical support ratios, I was in error with how I dealt with the community after the fact because I wasn't really selling anything. While I could have used that time to promote the products I had worked on, I ended up just talking about piracy more than anything else, and this gave those who were promoting piracy their entry.

I made the same mistake going on about Sony. Not only did I have nothing to "sell," my actions actually damaged my personal marketability. While testers loved it because it brought attention to issues that they faced every single day, it did nothing but damage my ability to continue in the games industry.

When I am testing, I like to think of what I do as science. I observe an error, I create a hypothesis about what could cause that error, I experiment to prove or disprove the hypothesis and repeat that process until I come up with a consistently reproducible case for the error, analyze and report on the error, and then retest later on.

Unfortunately, I suffer from the same failing as many scientists. I see the purity of what I do and because I am so close to it, I can't see how what I am doing can be misconstrued or seen for anything other than what it is. Being "liked" doesn't even enter into the picture.

Look at the "debate" between scientists and creationists. The scientists have the evidence, they have theories that have been able to reliably predict results (the true mark of a good theory), they have how evolution not only applies to the diversity of life but also to other fields of study, but for the most part, they do not have public speaking skills. They come across as elitists preaching from their ivory towers. Even though they speak the truth, they don't come across as "likable," and so they lose the debate. The quality of the evidence and the quality of the argument mean less to the majority of American public than the quality of the presenter. Fortunately, the terms of the debate are changing...

But alas, I'm off on a tangent. (Another failing.) My point is that it was a really good thing for me to essentially vanish for the last year. It's given me time to rebuild my image both in and out of the games industry, get ready to return to college later this year, and all-in-all work on improving myself and the world of those around me.

Now that said, my posts here for the foreseeable future are going to fall into one of four categories.

One, useful pieces of information or code that could help someone who encounters a problem similar or identical to what I have recently encountered. According to my web stats, these are the most popular entries and pay for ~75% of my ad traffic.

Two, funny videos or pictures that my readers might enjoy. There won't be many of these. Usually, I share these over at ShackNews.

Three, updates on life or family. (My granddaughter who was hit by a truck is home now and recovering nicely. Thank you for the well-wishing.)

Finally, and this is going to seem a bit vague but it is with good reason, I'm going to try to focus less on the what and the how of things but focus a bit more on the why. While it is admirable to see what is happening and even more so to understand how it happens, knowing the why is what gives you power.

May 18, 2008

Guest Post #1 Up

My first guest post is up over at Game QA Blog.

Check out "Soft Language" here.

Also, some of you may start seeing ads for over the next week or two. VGD has been making just enough off of advertising to pay for its hosting and domain name, and I'm investing a little bit to try to increase its exposure.

May 17, 2008

When Should You License A Component?

In the past, we've all had to reinvent the wheel because we couldn't afford a component or library that we have needed to get our work done. However, even when you can afford it, it may not be the proper choice. So how do you decide when you should license a component?

The simple formula is license if it is cheaper than what it would cost for you to make it times five, but here is the breakdown of how to arrive at that formula.

First, take the cost of what it would cost to create the component from scratch. This is really your gross hourly wage, working at most 30 hours a week. (Expect 10 hours a week for breaks, false starts, meetings, etc.) Double that includes your time debugging and integrating your component, and triple that includes your time having to support your own code.

At this point, we are at three times what it directly costs you to implement the feature. Now double that. This represents your lost opportunity cost: time you spend working on this feature/component/library is time you aren't working on other things.

That brings us to six times the cost of what it would take you to implement it yourself. Why is the formula only five times? Subtract the original implementation cost to account for how long it will take you to actually implement the licensed component in your system. No matter how easy the licensor may claim it will be, there will always be a gotcha that will force you to take time debugging how the component works, contacting their support department, etc. It usually approximates your implementation timeline.

Mind you, this does not mean that open source/free software is automatically the best thing. If you aren't getting support, you have to factor in the time you will spend looking for the answers into the formula. In addition, many open source components and libraries have licenses that are incompatible with the needs of many businesses.

So to sum up, if it costs less than five times what it would cost you to make it, license it.

May 15, 2008

Tech Support in a Nutshell

In this short over at, Dogbert shows the solution to 95% of all technical support problems.

Yes, most of the time it is that simple.

May 13, 2008

QA Mindset in a Dev Mind

I'm trying to prepare some guest posts for Game QA Blog and it has been a bit of a challenge to mentally shift myself back into the QA mindset. I've been trying to figure out what the difference has been really between being a developer and being a tester, and while I think I've got it, it's difficult to put into words.

As a developer, I can afford to have the one thing that I could never afford to have in Not faith in a higher power or faith in other in myself.

In QA, you are always second guessing have to. Did they implement this feature right? Did they fix their bug? Did my test cases properly cover the feature? Did I get all of the related features? Did my fellow testers properly test their areas? Could a combination of our tests trigger an interaction or integration bug? What don't we know? It doesn't help that if you miss something, it all comes back on QA.

Even the best testers lose some skepticism of that when they become developers. I can unit test all day long, but the difference is that while in QA my job was to keep bad software from going out, my job as a developer is to ship software. Every once in awhile, I catch myself doing the "it builds, smoke it, ship it" cycle and I really have to stop and remind myself of the pain that mindset can cause, but it does get increasingly harder to shift back to that.

The good thing is that while I have faith in my abilities, the tester in me keeps nagging me because the tester in me knows my weaknesses. My inner tester constantly reminds me that I have issues with double-caching under load at times, threading deadlocks (of course, who doesn't have problems with that), and remembering to code for the one corner case that is brought up as an aside in the design meetings that ends up being the most important part of the application.

I tend to rush through the implementation of my features because I have faith that I'll get pretty much everything but the above right so I can spend the proper amount of time testing my code to try to ensure that I've properly accounted for my weak spots. I guess that's another major upside about being a developer. I can make up for not being able to afford faith as a tester by continually testing my faith in my skills as a developer.

Every bug I find in my own code is penance for a bug that I let slip through.

May 11, 2008

Movie Details

I love looking for hidden things in films. It helps keep my eyes sharp and is a good way of improving your attention to detail.

IMDB has even started adding in some of the trivia I've submitted.

For example, on the "Snakes on a Plane" IMDB entry, they finally added my submission that I sent to them last April.

What do you do to keep your observation skills sharp?

May 10, 2008

Douglas Adams

I miss Douglas Adams. Here he is reading a section from "The Restaurant at the End of the Universe" (not "The Hitchhiker's Guide to the Galaxy" as introduced in the video)...

Rational Thought vs. Superstition

Why fight for rational thought in school? Because it is there in increasingly short supply.

Church / Vote / State

I had a bit of a disturbing experience this morning. I voted for a school bond. That isn't the disturbing part. The polling place was in a church. Specifically, it was in the religious primary school attached to the church, but it was still in a church.

I'm an atheist so the building has no special relevance to me, but I wondered about others who do have faith in a supreme being and what effect the location of the polling place would have on their vote.

What if the polling place was in a Gurdwara and everyone had to take their shoes off and cover their heads before entering?

Would the proximity of flame in a Zoroastrian Fire Temple potentially be seen as a risk to the ballots?

What if the polling place was in a mosque? Should voting be disrupted during one of the five daily prayer periods?

What if the polling place was in a jinja and you had to have permission from the Shinto priest to enter?

Where would the polling place even be able to be in a mandir? How about the Bahá'í Houses of Worship? Or a Latter-Day Saint temple, where non-Mormons are forbidden to enter?

What if, as is more and more common, your priest made a sermon prior to election day about the very topic on the ballot that you disagreed with, but the polling place was in your place of worship? Which would take priority, your duty to God, country or your conscience? Should someone of faith even have to make that choice?

May 7, 2008

Zune 2.5 WTF

I really like my Zune, and I'm glad that I can now buy TV shows if I want to, but come on...$144 for a single season? The shows are already slightly more expensive than they are on iTunes ($2.00 instead of $1.99), but season passes on iTunes are a wee bit more realistic. Most are in the sub-$40 range.

May 3, 2008


While I was in my training track today, my granddaughter Alex was hit by a car while she was crossing I-10 around here to head home.

She's currently in the trauma ward at Texas Medical Center in Houston.

Beyond that, I have no information. I'll try to keep you posted.

Update: She was jaywalking across the frontage road while talking on her cellphone. She has a fractured pelvis, possible spinal and head injuries, and keeps drifting in and out of consciousness. To top it all off, she isn't insured. Still trying to get more information.

Update 2: She's supposed to go home today. No spinal or head injuries, just a broken pelvis and a quiet sense of gratitude for having been skipped by Darwinian selection.

Eight Days of Exhaustion

I am sure that everyone has had one of those weeks where even though nearly everything has gone wonderfully, you still want the week to be over. This is one of these weeks.

Note: I will update this post later with relevant hyperlinks. (Update: Updated and typo fixed.)

I am currently sitting in the Addison Conference and Theater Center for Dallas TechFest 2008. I had to leave at 6:15am to get here, and since the only wireless available to me is unsecured pay service, I'm typing this on my BlackBerry for lack of anything better to do.

A week ago today, I was lucky enough to get to see a live riffing by the crew at Cinematic Titanic of their next movie riff, the Roger Corman "classic" known as "The Wasp Woman.". (You can see this over at do you really want to?)

I have spent the last week poring over nearly 100,000 data records to try to find an integrity issue with our numbers, putting out fires at work, and overall just working myself a lot harder than normal...and now I am here so I can learn more stuff so that I can do more work.

Let nobody tell you that coders make sense. At least I am investing some time in my future. I know many coders who don't...or even worse, won't.

Anyway, I'm going to be posting a bit over at some other blogs in the near future. Currently finishing up a post called "There are no theists in QA.". Guess what the topic is?

April 27, 2008

Ken Miller on Intelligent Design

This webcast starts with a prayer, but do not let that distract you. This nearly two hour webcast is Ken Miller speaking at Case Western University about Intelligent Design (ID).

Ken Miller was one of the plantiff's witnesses in Kitzmiller et al. v. Dover Area School District, the recent case where ID was essentially struck down.

His lecture is approximately 70 minutes with the rest dedicated to a Q&A session, but even if you are not scientifically minded, I highly encourage you to watch this webcast. He isn't negative against religion, he isn't needlessly pro-science, he doesn't talk down to people. What he does do is show what is at risk in very stark detail. Pay attention at approximately 1 hour, 7 minutes, 40 seconds.

April 26, 2008

"Expelled: No Intelligence Allowed" Lacks Intelligence

Some of you may know about a new film recently released by Ben Stein called "Expelled: No Intelligence Allowed." The basic premise of the movie is that if you believe in creation instead of evolution, your views are being suppressed in education and that the "controversy should be taught."

The Net is abuzz with controversy about this film. Everything from one of the people interviewed for the film being kicked out of a screening for no apparent reason to Yoko Ono actually doing something admirable and suing the film's creators to ask them to remove a clip from John Lennon's "Imagine" that was used without permission.

As an aside, I think it's funny that a film of creationist propaganda would use a song that espouses "Imagine there's no heaven...No hell below us...No religion," all of which in the first half of the song...but I digress.

Now, I'd try to tear down some of the arguments posed by the film, but fortunately, I don't have to. A YouTuber by the handle of "Thunderf00t" has been doing an amazing job of it already. He has an amazing video series called "Why do people laugh at creationists?" that takes arguments put forward by creationists and tears them apart.

Here is his edition specifically focused on the PR campaign for "Expelled."

Now, this isn't to say that there are not legitimate controversies within evolution, but the controversies are not about the accuracy of the theory. The debate within the scientific community is more about the specific mechanisms in force during natural selection. Is it group selection, Dawkin's "selfish gene" theory, or others? All of these have merit and the evidence to support all of them is currently building.

If you insist on teaching the controversies present in science, make sure that you are teaching the controversies that are actually there.

April 25, 2008

MSN Bringing You The Unthinkable

I've had to start using MSN Messenger again at work, and one disturbing feature of it is a small content rotator at the bottom of the contact list. It cycles through various stories and video clips that are highlighted on various Microsoft and sponsor properties.

There was one I wasn't expecting to see...

Harrison Ford waxing his chest
Yes, that's right...Harrison Ford waxing his chest. I don't want to know about you?

April 24, 2008

The #1 Reason Not To Be In Games Test

You started as a tester and were making $8 an hour and were happy. You did a great job, so they offered you a test lead position for $36,000 a year. If you were working a flat 40 a week, this would work out to approximately $17.30 an hour or $692 a week, and would be good.

Most test leads don't work a flat 40. Most test leads end up working about 60 hours a week. Guess what? You just prorated yourself down to $8 an hour. I'll explain.

When you are working hourly, you get paid time and a half for every hour above 40. If you aren't getting overtime, check with your local labor board because there are severe problems.

At $8 an hour, you gross $320 a week.

If you work 1 hour of overtime, that goes to $332 a week. At 10 hours of overtime (not uncommon), that goes to $452 a week. At 20 hours of overtime, that goes to $692 a week...a tie with the salaried test lead position.

During crunch time, there are times when I've worked enough hours to prorate myself down to minimum wage.

Most companies say that because you are salaried, you are now part of the bonus program, etc., but given how rarely the bonus programs pay out anymore, you really have to stop and think for a bit. If hourly won't pay a living wage and salaried essentially requires you to devote your life to work, who is really benefiting?

As long as game testing is seen as glamorous and attracts the sheer number of applicants that it currently does, there is no systemic solution for this. If you are going to accept a salaried position, work with your manager to put hard caps on the number of hours that you will work each week. Failure to do so can only end in wishing that you stuck around flipping burgers.

April 21, 2008

What Are You Doing It For?

Over the weekend, I had the chance to go to the movies with a few Shackers, including a couple of D/FW area game developers. One of them was starting to reach his one-year anniversary at his studio, and what he was going through reminded me of what was going on during my one-year anniversaries at both Microsoft Game Studios and Ritual.

Most people who go into game development specifically enter the field because they love games. Note: they don't love game development, they love games. It's this passion for games that carries most people through their first year or so. It carries them through the long hours, the (comparatively) low pay, the milestone stresses, and so on. There are a couple of catches, though.

The first catch is that the act of making games affects how you enjoy games. When you look at a game that you are playing for fun, you no longer just see it as a wonderfully interactive notice the components. You notice the varying texture densities on various objects, the oddities in pathfinding, the strange concessions made in the interest of certification or compatibility, the strange color mixing of sortless Z-test glass rendering, etc. Because you're essentially noticing the man behind the certain as it were, you are drawn out of the experience. As a result, your passion for games tends to start to wane after your first year.

The second catch is that because your passion for games isn't as prevalent, your passion isn't able to carry you through the difficult times and you start thinking, "What the Hell am I doing this for?" Remember, you've just spent a year prorating your hourly salary down to nothing, ignoring life and love for the sake of your craft...and things won't get any better. Waves of ennui wrack your body, the fuse on your temper gets shorter, and most of all you just start wondering if any of the effort is going to be worth it.

This process is a very personal experience and frankly is not one that you are going to be able to find much help with if you are experiencing it. The trick is to find a secondary passion that game development enables you to do that doesn't involve video games. Some people find that passion in sin: gambling, strippers, and hookers are all good examples that I've seen people get involved in. Some find that passion in collecting: DVD's, anime cels, guns, porn actress action figures, and educational films are all examples I've seen people dive into. I know a few who have focused on community service as well. Back at Microsoft, I went into painting, and at Ritual I focused my energy into this blog.

One thing that I like about no longer being in the industry is that my passion for gaming is recharging, but when you are in the factory that passion can and will wane. If you don't take time for you as a factor of finding a proper work/life balance, you'll drive yourself out of the career that you worked so hard to get into.

April 19, 2008

At last...

Readership is down to under 25% of what it was back when I was at Ritual. I'm pretty much out of the public eye aside from past articles being located on Google.

The pressure is off. Time to start again.

April 17, 2008

Piracy as an ESS

I want to talk about piracy again, but I'm going to remove morality from the discussion because it just brings the language Nazis out of the woodwork and I think this discussion can actually work without morality being brought in for this viewpoint. The reason I want to bring this up now is because recent information has led to the possibility of an equilibrium being found. For the sake of simplicity, copy protection is not included as a factor for this simple model.

An evolutionary stable strategy (ESS) is defined as a strategy which, if most members of a population adopt it, cannot be bettered by an alternative strategy. (Dawkins, 1976) It is not necessary for all of a population to adopt a strategy for an ESS to emerge. In fact, it is possible to find a blended ESS which depends on percentages of the population adopting complementary or opposite behaviors.

In a software ecosystem, we have three behavior patterns: producer, buyer and liar. Producers create the software, buyers purchase the software, and liars pirate the software.

For producers, there is a cost associated with the creation of the software and a cost associated with handling support after the fact. In order to maintain an ESS, a producer has to have its initial release bring in enough resources to cover the cost of the initial release, the cost of supporting the release and the cost of the next release at a minimum. Any less and it risks dying out.

For buyers, there is a cost associated with the acquisition of the software and a gradually smaller support cost per buyer for the producers. (The reason that the cost is gradually smaller is that as patches and support documentation grow, the cost to the producer to support the release shrinks.)

For liars, there is next to no cost associated with the acquisition of the software and a much more stable support cost per liar for the producers. (The reason that the cost is much more stable is that liars cannot get the patches.)

As long as a producer has enough buyers to support his release and the support costs for the liars and the buyers, a producer can continue to produce. Experience and evidence released by other companies show that on average, 80% of technical support contacts are from people who have purchased the software, 15% are from people who may purchase the software, and 5% are from liars (people who have not purchased the software). While we cannot quantify the number of people who have not purchased the software, we can quantify their expense on support.

Regional experiments with game pricing has shown that for most games, the initial cost does not affect the number purchased, just the curve at which they are purchased. In other words, if a game will sell 300,000 units, it will sell them quickly at first with rapid drop down to a low level at $50 or at a slow steady pace at $20, but it will still only sell 300,000 units. So cost for games is not really one of the factors that can easily be adjusted.

The two factors that a producer can adjust are quality and quantity on a sliding scale based on the number of buyers in the market. A very short, high-quality game and a lengthy bug-laden game can cost about the same to make. A producer is trying to strike the balance between the duration of the game and its quality. In practice, the "money spot" is less than one support contact per thirty copies sold.

Now as the number of liars in a marketplace increase, the amount of resources that a producer can devote to the production of their next release decreases due to the increased support cost of the liar's market share.

At least at the moment, we have achieved a bit of equilibrium in the PC market. Five years ago, that equilibrium was at about $2 million to produce a product with about 350,000 buyers. Nowadays, the balance point has shifted to $750,000 to $1 million with 250,000 to 300,000 buyers. Fixed costs per unit have risen even though the prices that we sell games at has not. Pirated goods are more available on the PC due to the proliferation of broadband and the number of liars willing to pirate has increased in part due to the extremism of the anti-piracy lobbies of the RIAA and MPAA. Attempts to continually monetize games (MMO's, ad revenue) have had mixed results with most MMO's not being profitable and ad revenue averaging under $2 per unit sold.

Essentially, our equilibrium is smaller products like PopCap and Stardock titles. "Galactic Civilizations II" cost $1 million and sold approximately 300,000 units according to a Stardock spokesman. While there will be some big budget bets, they will be fewer and further between.

Even digital distribution isn't a godsend because rather than the cost of the unit and the retailer margin, we have the chargeback margin and the ongoing cost for bandwidth. Digital distribution may grow your marketplace, but people are still (rightfully) skittish about using their credit cards online, European debit cards won't always work on American networks, and to be fair, it further reduces the opportunity cost necessary for one to become a liar. In short, digital distribution is a wash.

The current generation of consoles is still trying to hit an equilibrium. The biggest advantage that consoles have is that there is a higher barrier of entry for a liar to take from a producer on a console (the cost of modifying the console) and there is a risk associated with modding because the act of modding could result in damaging or destroying the console. As a result, liars don't really become a problem for consoles until a soft mod is released.

So to sum up, the marketplace is evolving to handle the larger number of pirates by reducing the amount spent per title. If the number of liars continue to increase while the number of buyers continues its slow decline, it is very likely that the PC market will return to the days of hobbyist developers being in charge (in which cases systems like Microsoft's XNA initiative will seem more prophetic than anything), but unless we can come to some middle ground between the anti-piracy and copyright-abolition agendas, we will continue to see fewer and fewer high-profile bets on the PC.

April 13, 2008

Game Jam from the Past

One thing you may hear about from time to time in the games industry is an event called a "game jam." What a game jam is is nothing more than a few game developers getting together for a weekend and knocking a game out. The game may not have very high production values or a lot of gameplay or even work, but the whole point is to experiment with different gameplay. Most of the time, the results of these jams aren't seen by the public, but on occasion one will seep out.

This is from a game jam I participated in back 0n February 20 and 21 2005, with some minor modifications through to February 24, 2005. It will not work as is. It uses Managed DirectX and Visual Basic .NET 2003 and is distributed in source form. Once you are able to get it to run, you'll find the assets for four levels but only the level data for one. I'm not all that happy with my coding style at the time, but I'm happy to say that the quality of my code has improved dramatically since then.

I've also included the source code for SplitTGA, the tool used to split the original 4096x4096 TGA files into the smaller TGA tiles. To be honest, I should have converted them to JPG files.

Download "Infection: Viral Defense 3D" (297Mb)

This download may go away soon depending on the traffic load on my webhost, but given that I just renewed for a year, it should be up for a little bit.

April 10, 2008

Predict Your Ship Date

One of the key skills you acquire on your way to a leadership position in software development is a bit of an innate gut feeling about exactly WHEN you are going to ship. However, there are times when your gut isn't enough and you need to be able to back it up with facts.

In the past, I created an Excel spreadsheet and a chart that mapped find rates, resolve rates, fix rates, tester and developer weeks to a logarithmic chart and usually came up with a gold date that was accurate within five days.

However, there are times when you have a lot of historical data on your side and you need to get even more granular. For times like that, Andrew Delin has posted a spreadsheet that could help.

March 24, 2008

Technical Support and Pirates, Part Deux

You may remember that I was reamed rather hard for talking about people attempting to get technical support for pirated copies of "SiN Episodes." even attempted to tear me a new one on their main page. (No, I'm not linking to it. Fuck the goons.)

Bruce Shelley at Ensemble has reported that at least 500 people have contacted technical support trying to get online using a pirated copy of "Age of Empires III."
Our customer service people say that in the last several months they have received over 500 email inquiries from people trying to get online with pirated copies. The strength of the Age online multiplayer experience is what saves our business and our jobs, and keeps us going so we can make more games. You can’t play Age online without a legitimate copy, and that helps the game remain in the list of top twenty best-selling PC games for the fourth year. It may be that PC games without a strong online component requiring a legitimate copy are doomed to modest success at best.
All I can say is that I wish the number of people who contacted me back at Ritual for support (and since I've been laid off) were only in the three digit territory. I received five hundred requests for support for the pirated version of "SiN Episodes" last year...after I was off the payroll.

Mind you, he's only talking about people who were trying to get online with their pirated copies. It's quite possible that the number of people contacting support for other reasons could be higher. However, I love how eloquently he put his closing comment on the topic...
A bigger question for me is whether game piracy and its cousins (music piracy and online game cheating, for example) are becoming so socially acceptable and widespread that they are changing our culture. Will a society that finds it increasingly okay to steal and cheat online find it similarly acceptable to lie, cheat, and steal in all aspects of offline life?

Maintenance Downside

Just over sixteen months ago, I was laid off by Ritual Entertainment. Since then, I've gone from being a contractor with problems getting paid to Senior Programmer/Analyst at my job. (By the way, it's sounding like Joshua Herman is back to his check-bouncing ways according to a commenter.)

Over the last sixteen months, my primary job here has been doing maintenance work on a fairly large existing code base. Coming from a QA background is actually very beneficial when you are doing maintenance work. You understand that even the smallest change could cause unforeseen consequences. It may take me a bit longer to go through and find the smallest possible change to get the desired effect, but as a result the number of changes of mine that result in major issues is very small.

There is one large downside to doing mostly maintenance work, get rusty when it comes to making a new project from scratch. The two have completely different mindsets associated with them.

When I'm doing maintenance work, I have a large existing code base and my focus is to make my change in such a way that the rest of the house of cards doesn't come crumpling down on top of me. That involves refactoring where appropriate, careful analysis of dependency chains, and fighting the urge to tear out the entire code base and start from scratch.

When I'm doing new development, I have a blank slate and my focus is to get to a functioning system as quickly as possible. That involves creating code that can easily be refactored, creation of simple dependency chains, and the willingness to see that I've made a large scale architectural mistake, tear out the entire code base and start from scratch again.

Generally when I'm doing new development, I plan out enough time for me to make my prototype, get it functioning at a basic level, and then scrap the prototype so I can build the product based on the lessons learned while making the prototype.

Regardless, the amount of maintenance coding I've been doing has been affecting my ability to effectively write new code. If we weren't short-staffed, I'd probably take a one-week sabbatical so I could work on a 40-hour project just to get my sea legs again.

After all, the only way to get used to writing new to write new code.

March 16, 2008

Server Fail

I hate server failures with a passion, even moreso when it's one of my personal servers.

My development server that has held my source control database, my source code, backups of development tools, everything code related died recently.

Fortunately, I was doing backups every other week. Unfortunately, it died the day before my next scheduled backup so I lost almost two weeks worth of work on the rewrite of

After struggling with the decision for a few days, I decided to give the rewrite a rest and just put up a wiki in its place. If you want to help repopulate VistaGameDoctor for the Tuesday release of Vista SP1, you can register and help out at:

February 26, 2008

Shacknews Downtime

An ATA controller on a load balancer failed this morning for

From what I understand, they are nearly done repairing the server.