0 Comments

When I was still in elementary school I used to take martial art class, specifically Kyoukushin karate.  And when you get to a certain level, you have to perform some series of karate movements / form called kata, for example this one.  So, why am I talking about martial art in a development related blog?

Apparently some coders like Dave Thomas and Uncle Bob (in this podcast) believe that us coder can learn something from martial art.  Really?

One used of kata in Karate is to build up one's muscle memory.  Once you learn the form, it will come easily to you when you need to perform it.

Dave believe, just as kata in martial art can improve the practioner's skill, by adapting kata in coding (by performing a series of coding exercise repeatedly), can hone your skill as a programmer through a lot practice and repetition.  Thus he coined the term Code Kata.

Actually, I heard about this a while ago, but I never took any real interest in it, until a couple days back when I listed to this particular Herding Code podcast.  In the podcast, they talked about someone doing this String Calculator Kata in Python and Vim.  The actual topic was not even about the kata, but about how awesome this guy in using editor like Vim.  Anyhow... As I said before, it made me interested, so I looked it up on the net and found this.  Which if you are not familiar with the context, you will be scratching your head while watching it... like myself :).  So I go search around a bit more on String Calculator Kata and found out that Roy Osherove was the one who created it and I found out the context that I need to understand just what the heck the previous video is about,here.   So, I decided, what the heck, I'll give it a try in C# and the MS Test framework that comes with Visual Studio.  Doing the usual TDD red green refactor steps, I managed to complete the kata to what I think was satisfactory result.  Roy also posted a bunch of kata-cast on the same page and I decided to give some a look and a glance and stumbled upon this one.  And boy, I was watching it with my mouth half opened on some of the stuffs that they did in that katacast which sort of open my mind and eyes to a whole lot of possibility (on how to use LINQ, lambda & fluent interface programming style.

Not that I'm going to do this daily from now on, but I do think practicing the code kata from time to time will benefit me in the long run, so I'll give it a try, perhaps in multiple different languages, which should also be a good way to learn the language that I want to learn like Ruby for example.

So, what are you waiting for? Learn it, Practice it, Love it... Happy Code-Kata-ing??  Is that even a word?

0 Comments

Kanban board will provide a better transparency to your agile process.

I won't try to explain what it is since others has done it before... which you can see here.  The link also provide an excellent e-book on how to integrate Scum and Kanban and a link to their example of a kanban board for those who wants to see the quick details.  You can see it here.

 If you are more into the "digital" board, there are other options like Telerik Work Item Manager for TFS, and AgileZen.

Oh, if you haven't heard already, MSF Agile 5 (which ship as a template with TFS 2010) is basically a Scrum based process.  Don't believe it, see this

 So, learn it, use it, love it :).

Happy Scrumming.

0 Comments
  • Posted in:
  • TFS

Why oh why?

The most common reason for this particular error message is you have a customized Bug Work Item Type which fields do not match what is expected in the TFSBuild.proj file.

Local or Global Fix?

There are several ways you can solve this problem which can be applied to individual build definition TFSBuild.proj or as a TFSBuild.proj template change to prevent the error from happening again when you create a new build definition. 

To change the template, make your changes to the following file: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\1033\TFSBuild.projNOTE: You need to make the changes on the Build Manager (whoever is responsible to create the build definition) machine and not on the TFS server.  As I said above, do this only when you want subsequent (any new) Build Definition to be fixed automatically.

To change each individual build, navigate to the [Insert your Team Project name]\TeamBuildTypes\[Insert build definition name here] in your Source Control Explorer and change the TFSBuild.proj file for that particular build.  This should let you pick and choose where to apply the fix.

Options

  1. If you don't care about creating the work item at all as part of your build failure, just add <SkipWorkItemCreation>true</SkipWorkItemCreation> inside the <PropertyGroup> node.  This will prevent the Bug Work Item creation when the build failed.

  2. If you want TFS Build to create the task in your custom "Bug" Work Item, make sure to map or change the field definition in the <WorkItemFieldValues>...</WorkItemFieldValues> node in the TFSBuild.proj file.

  3. If you want TFS Build to use a different Work Item template (and not your custom "Bug" Work Item), you can create a specialized Buld Failure Work Item by importing the standard Bug Work Item from an out of the box TFS process template such as the MSF Agile one and change the the <WorkItemType>Bug</WorkItemType> node in the TFSBuild.proj file to <WorkItemType>Bug Failure</WorkItemType> (Replace Bug Failure with whatever you name your imported Bug work item as).

Additional References

Recommendation

  • Install TFS Power Tools on your development environment.  It comes with Process Template Editor VS add-in for doing visual Work Item customization instead of the regular XML edit method using witimport / witexport command line tools.

0 Comments

I'm not sure if this only happens on Windows 7 or not, but I encountered such message when trying to start a game after rebuilding my machine using Windows 7 64 bit. Actually, I encountered it pretty much on any game I tried to start that uses DirectX 3D.  Looking around the web only gave me bits and pieces of clues that didn't quite go anywhere.

Some said to copy the offending DLL into %SystemRoot%\System32 directory, which didn't work.  Some others suggested reinstalling DirectX 9.0c, which I also tried but didn't work either; however, this is one step toward the right solution, just not the whole solution.  I tried reinstalling DirectX multiple times using the DirectX End-User Runtime Web Installer and Redistributable ones.  All ended up in error.  The installer suggested that I looked into the log files in the Windows directory called DirectX.log and DXError.log.  It turned out to be an access denied error somewhere along the way during the installation which I found in the DXError.log file.    I then tried to use elevated privilege (Run as Administrator) to run the installer again, but that also didn't work and ended up with the same error.  *scratch head*.

Running out of idea of what to do, I went back to the web to try and find out what could be causing this error.  After lots of time browsing and searching around the web I ended up in a forum post which suggested that I turned off the real time protection of the Forefront client (the antivirus software that I was using) before retrying the DirectX installation again.  I tried that and WOOT... that fixed the problem.  DirectX successfully installed and when I tried to run the games that didn't work before, it runs like cutting butter with a hot knife :) (or something like that)

So, moral of the story... if anything else fail, check your antivirus :).  I ran into similar problems on other software (not game related).  For example, when trying to use port 6666 as K2 Blackpearl Server port, I was blocked by McAfee because it was assuming that was an IRC port that is dangerous to expose in a corporate environment.   A different time, my mail won't go through the SMTP server because...again... it was blocked by the antivirus.

I supposed this is one thing that can be added to List of Dumb Things to Check.

Hope this post helped somebody out there that is banging their head because of lack of answer to similar question.