Wednesday, June 23, 2010

Been at the coalface

Wow, it's been more than a year, time flies like the wind (fruit flies like bananas). Working is good and over the past year I've been hands on with Windows Mobile 6, developing a mobile application for Powerco for field staff to test and record results for power industry assets like power poles, transformers, fuses, switches. Kind of weird to be back writing Windows Forms based apps after focusing on web apps for a long time and working with the shrunken version of .NET had some frustrations but I'm reasonably happy with the end result. Of course 20/20 hindsight is a wonderful thing and if I had it to do over again I would inevitably make some different choices.

I like LINQ, DTO's, PowerShell ISE, Visual Studio 2010, and Scrum. .netTiers not so much. MSBuild (including the MSBuild Community Tasks and the MSBuild Extension Pack) was awesome for patching .netTiers code generation issues and for automating builds right through to outputting .msi installers for each of the test, staging, and production environments. Getting consistent installs was a huge benefit and automating all the little tweaks required to get the .netTiers output to build reduced the code generation time from about a day down to just a few minutes.

I'm not dissing .netTiers particularly, it's just prior to automating the tweaks they had all been done by hand with associated risk of transcription errors plus the time factor required. Many of the tweaks could also be applied directly to the templates so the code was generated correctly in the first place. Taking a long and often frustrating exercise and automating it meant we could effect database changes quickly and were far less concerned about having to regenerate the code if something wasn't quite right. Overall .netTiers is a fairly hefty tool and I still find it frustrating getting it to produce the desired results if the desired results don't conform to the standard output. 

I've also been doing some work for base 2 on their task management application. That app uses SubSonic for data access and I really like the lighter weight of the tool. Generating code is fast and largely hassle-free. Of course it attempts to do a lot less than .netTiers which generates multiple data/service layers and I suppose each is a reasonable choice for its respective domain. Actually .netTiers was already part of the ecosystem when I joined that project and I can't imagine ever prescribing it for future work.