Thursday, March 22, 2007

Tools I have been using...

Time to create a list of tools I have been using in my current project before jumping into a new bunker next week:

  • SubVersion
  • I honestly don't have a preference when it comes to version control software. I have used VSS, CVS and now SVN. The differences in terms of file lock, branch etc are not really that big a deal. TortoiseSvn sure makes your life a lot easier by integrating version control into windows explorer though.
  • CruiseControl.NET
  • I had been using home-made daily/weekly automated build process and regression tests to ensure continuous integration, before I got to know CruiseControl.NET, that is. Make sure you install the client tool CCTray.
  • BugTracker
  • I feel that bug tracking tools are generally understated in the software development methodologies such as XP. Most developers are probably put off by the term "bug". But bug tracking tools are not limited to track "bugs", they can be used to track new feature developments, document design limitations and provide a structured "knowledge base" for the project. I have used Bugzilla in the past. Built on .NET platform, Bugtracker is not super sophisticated, but it's small enough to get your hands dirty on. And it probably provides enough functionalities for Scrum-sized development teams.
  • TWiki
  • I'm so obsessed with Wiki style documentation at one time, I was called the WikiMan... The benefit of using Wiki for knowledge sharing is that the documents created are naturely structured, and most Wiki implementations provide full-text search functionality. And also because it's so easy to use, a Caveman can do it... TWiki is not .NET based. It's on Perl and Apache. And I never got into the TWiki plugin stuff, which can probably be used instead of the bugtracker. I'd be interested to see a .NET implementation of Wiki --- it has to be at least as good as TWiki though.
  • Reflector
  • Any .Net developer NOT using Reflector? I use it primarily to get a peek into framework library implementations (and Whispering: third party tools). If, however, you want to gain some insights into CLR itself (GC, thread pool, etc), SSCLI is a better bet.
  • Regulator
  • If you ever need to write a multiline regular expression, you need this. Period.
  • ManagedXLL
  • Anyone in Finance will tell you that Excel is the best product of Microsoft. And any developer ever wrote a XLL plugin for Excel will tell you how painful that experience was. Creating Excel plugins in C# with ManagedXLL, on the other hand, is almost pain-free. You still need to watch out for the mysterious way in which Excel updates the spread sheets though.
  • CodeSmith
  • In retrospect, I probably used CodeSmith in a not-so-effective way: we used it to produce the DAO and Store Procs. The design of the system is less clean-cut:
    • If we take a data centric view of the world, we should probably take the typed datasets and push it all the way through out the system.
    • If the view is object centric, an O/R mapping tool (such as NHibernate) would be a better fit.
    There is nothing wrong with CodeSmith though. It's very useful when you need to produce large batches of template based classes.
  • Spring.NET
  • I dont' pretend to be an expert on IOC/DI or AOP. I have only used Spring.NET framework as a generic configurable Factory pattern implementation (IoC, in its simplest sense). Still, I feel the extreme flexibity the framework provides. In fact, I think the downside is that it makes developer easily over-design their system by abusing the pattern with too many dependency injections.
  • GenuineChannels
  • A bidirectional TCP channel implementation. A feature .NET Remoting developers have cried out for since the day .NET came to existence.
  • MSAS/PivotTable/ADOMD
  • This is the first time I tried OLAP reporting. The Microsoft OLAP pipeline is quite impressive, even with MSAS 2000. MSAS integration with Excel pivot table is seamless and it freed up developers from writing an ocean of custom reports as customers could easily slice and dice the pivot table in their liking, not to mention the update is realtime.
Of course, these are only from the special menu. The usual would undoubtedly include NUnit, Nant, log4net etc.