December 31, 2009

I don't think you'll be able to find many people who think this year has been a good year. I definitely don't think this was a good year as a whole, but I do think that several good things have happened this year. That said, this year was a culmination of a multi-year effort for me and to let you know what I'm talking about, I need to go back into history for a few minutes.

I started in quality assurance back in 1998 at Access Software, coming in at the end of Links LS 1999 Edition and coming into an extremely defective QA process. Even as defective as it was, it planted a seed in me that unleashed some latent talents. I quickly became a test lead and continued along that path at Microsoft after the acquisition. While the QA process at Microsoft was significantly improved, the environment had changed to the point where two things had happened: my connections to what I was testing became more ephemeral because of my position, and I started to feel disconnected from not only my department but my duties as well. It was affecting my performance and behavior in negative ways. Yvonne's illness gave me an excuse to start searching for a different job and I finally left Microsoft after working on Amped 2.

Now, even though QA was my passion, I've almost always coded. Coding had been a creative outlet for me, and I'd spend hundreds of dollars a month on books so I could learn new languages, new techniques, and new technologies. I had been writing games since I was five, and that coding experience helped me in QA because I could look at a feature, say to myself, "How would I develop this?" and test the code as if I wrote it. Because no two programmers will ever code a feature the same way, this dissonance helped me out significantly in my career. My coding experience also helped me land on my feet outside of Microsoft by working for my home town of Layton, Utah. I very nearly didn't get the job. After I was hired, my boss told me that he looked at me and saw someone who was burned out to the point of not caring anymore which was a very fair assessment. While the pay at Layton wasn't all that great, coding as a full-time job was reinvigorating. I got a much deeper understanding of data-driven coding, learned a lot about when you have to reinvent the wheel, and even though I look back on my code back then and laugh at how primitive it was, the experience taught me a lot about dealing with internal and external customers, requirements gathering, and more.

Now, before I had even started at Layton City, I had sent out tons of resumes as part of my effort to leave Microsoft. One of those resumes had been to Ritual Entertainment. I had been in discussions with them during my last year at Microsoft and finally had a chance to interview with them in March of 2004 and was told at that point that I was their choice. However, work they had been doing on the new Legacy of Kain title (a sequel to Defiance) had been canceled by Eidos and they had to suspend my hiring. They managed to get other projects and finally were able to make me an offer just before Thanksgiving in 2004 to be their new QA manager. My role was going to be to create their QA department and policies from scratch, and I eagerly accepted the role and moved to Dallas.

I had two motives when I accepted the job. The first was to introduce QA to Ritual without hitting any of the roadblocks that Microsoft hit retrofitting Access with their QA structure. The second was the belief that I had something to share with the industry and working for what I thought to be a premiere independent developer would give me a mouthpiece from which to speak.

Well, I failed at my first motive. I approached Ritual with kid gloves and while the approach was better received than the iron fist of law, it made it seem like I wasn't serious about getting QA in. As a result, I ended up having a total budget over my two year tenure of under $150,000...and that included salaries, config passes at external labs, hardware and more. Trying to be Mr. Nice Guy meant several necessary QA policies weren't going to be implemented until at least year four (if I made it that long).

I fared much better at succeeding on the second point. Interviews with the fansite and several gaming websites, dealing with the customer base directly, and access to several industry backchannels that were previously unavailable to me gave me a podium and I used it. I still have a lot of friendships from my efforts at the time.

Three things happened in my last year at Ritual. One of the three major projects we had (an expansion to a recently released game) was cancelled due to poor sales of the original title, another major project shipped but died in the marketplace, and Ritual had started to staff up for a third title that we were partnering with another local dev on that never materialized due to a license holder dicking everyone around. The end of that third piece coincided with my Sony post. Given that Ritual was shifting into survival mode, my layoff was understandable, but it still shook me to my core.

After the employment situation settled down, I found that I was still fairly shook up. A lot of my beliefs about myself and my abilities were tested at Ritual and found wanting. I needed to really take stock in who I was, what I believed and why, and that's what I've been doing over the last two and a half years...re-examining almost every aspect of who I am.

I've found my core strength to be divining requirements from poor definitions. My skills in QA and development are directly tied to this piece of the puzzle.

I've discovered that while QA is my passion and always will be, I'm not the proper advocate for it on a large scale. There are many levels where advocacy can be done and I am much better at being an advocate at a local scale. Besides, anything that takes my focus away from my project is a bad thing.

Likewise, I love game development with a passion, but it takes so much out of me that if I ever go back, I shouldn't stay for more than three years in any sort of individual contributor role. That's pretty much my tolerance level for the type of bullshit that the games industry piles on its workers.

I'm still extremely antipiracy, but I am extremely pro-fair-use. I believe that as long as you aren't giving someone else an exact copy of what you acquired legally, you should be able to do damn near whatever you want with it. Space-shift, time-shift, transcode, encode, format-shift, mashup, breakup, modify...it's your business. As long as you don't demand support for your changes, go ahead.

Finally, I believe I've found the final use for this blog. Over the last several years, I've been posting little code snippets about how to solve or workaround various problems. No bullshit, no fluff...just a description of the problem and the code to make it go away. Aside from the occasional personal post like this one, that is going to be the focus of this blog going forward.

Thanks for sticking with this blog for nearly six years. It will be interesting to see if this blog makes it to the decade mark.

December 14, 2009

After adding an STS reference to your Sitefinity web site, you are able to get to the STS login, but after logging in, the website goes into an infinite refresh loop.

Reason:

Sitefinity takes over the ASP.NET pipeline at an inopportune moment for Windows Identify Foundation.

Solution:

Add a new ASP.NET page to your project called STS.aspx. The page can be blank. It's just there so that the ASP.NET pipeline will remain active at the proper time.

In your web.config, update your audienceUris and realm in the windows.identity section to point to [domain]/STS.aspx instead of just [domain].

Comment out the WSFederationAuthenticationModule httpModule and add this one in its place:<add name="SitefinityWSFederationAuthenticationModule" type="SitefinityWSFederationAuthenticationModule, App_Code" />

Add a new class to your App_Code folder called SitefinityWSFederationAuthenticationModule.cs with this code:

About Me

Currently Sr. Software Engineer in Test at Netflix. Formerly Sr. Quality Engineer on Firefly at Amazon, QA Manager at Ritual Entertainment, Software Test Lead at Microsoft Game Studios, Director of IT for Meeting Professionals International.

Opinions expressed are my own and do not necessarily represent those of any current, former, or future employer.