Friday, November 04, 2005

Development at Valve

Game Developer Magazine (http://gdmag.com/) had a real great article about Valve's process and practices that they used to produce Half-Life 2 (Nov 2005 issue). Go get your hands on the article it is really an interesting read.

Their process incuded many elements that are also found in Agile processes. They used a lot of prototyping and interations in the development. The iteration strategy really paid off for them. When faced with trade-offs they favored reducing scope to get more iterations. More iterations forced them to reduce the overhead costs of iterations. Having more iterations helped them increase quailty, experimentation, and enabled them to delay decisions until later in the process. They said "Decisions made later in the project were always better than decisions made earlier."

Their team culture is also very interesting. They worked in small 4-5 person teams (Cabal). Each Cabal shared an office space to increase communication and avoid getting side-tracked. They discouraged "sole ownership". They promoted positive competition between team members and across teams. Also they created demanding comsumers for everyone on the team.

I've only touched on some aspects of their system. You'll have to read the article to get the full story.

Monday, October 31, 2005

OpenCsv

Today I needed to parse some CSV data. A quick search found a project called OpenCsv that was added to sourceforge last month. I pulled it down and found it did a great job on the data I was parsing. The data I am parsing contained newlines, commas and quoted strings inside the csv elements. Some other libraries would not handle this correctly but OpenCsv did!

Friday, October 28, 2005

Rapid Prototyping - Recommended Reading

Gamasutra published a feature article "How to Prototype a Game in Under 7 Days:
Tips and Tricks from 4 Grad Students Who Made Over 50 Games in 1 Semester
"

This article provides an interesting story on rapid prototyping. Several points made directly oppose the ideas pushed by Agile Development. Specifically they devalue working together during the coding phases of the project. Also, they denounce formal Brainstorming. While at the same time, some points re-enforce Agile Practices. Their call for picking the solution done the fastest is similar to the Agile practice of making the "simplest thing that could possibly work".

Overall, I think there is more need for Rapid Prototyping in Business Application development. The Agile community calls this a "Spike Solution". Far too often I see product managers and developers writing production solutions without first creating a prototype.

Also, I agree with their assertion that "Complexity is not necessary for Fun" in game play. I think this also applies to application development in that "Complexity != Productive Solutions." Application designers seem to want to add flexibility and options. This adds Complexity and reduces the productivity of the users and developers. Most users just want a simple solution to their problem. Once they find the solution, they don't use those extra options.

They said their Brainstorming sessions did not produce immediate results. But it did get them thinking and at a later time (maybe while driving home), an idea would pop into their head. This is exactly the same process that I have read from a successful inventor. (Sorry I don't have the reference). The inventor said he could always find a new idea or solution with a two step process. First he would focus and concentrate on the problem for some time. He wouldn't expect to get any results from this activity. But somehow it got his subconcious mind working on the problem. Then the second step was just to do something else. Driving, going to a park, etc. At a later time his mind would bring up a new solution or invention related to the problem he had focused on in the first step.

Monday, October 24, 2005

Wednesday, October 12, 2005

Cross-site scripting

Java.net has posted a good little article on Cross-Site Scripting. Makes a great summary or beginners guide on the subject.

Tuesday, October 11, 2005

Virtual CD-Rom for XP from Microsoft (unsupported)

Need to mount an ISO image? Here is a simple tool from Microsoft: Virtual CD-ROM Control Panel for XP. While unsupported, it seems to work fine.

I found it on the PDC Vista Beta install disk. Looking around Microsoft's web, I found this reference to it... MSDN Subscriptions FAQ see question "What are ISO images files and how do I use them?

I was surprised to find they also linked to some 3rd party tools in the FAQ. Also, kudos to M$ for having java script on the page that worked with Firefox.

How to determine if .Net app is having Lock Contention

Open perfmon and add the .Net CLR LocksAndThreads. Select "Contention rate / sec" and "Total # of Contentions" (use ctrl-click). Then select your application from the "instances" list. Then click the Add and Close buttons. The report view is the best way to see the results.