Ben Scheirman


What I Do

Looks like a new blog meme is starting…  I was tagged by my good friend Shey who’s wanting to know what we all do. (sorry it took me so long to respond!)

So…  what would you say… you DO here?


Well, I’m a consultant, so my role sometimes changes.  Currently I’m a lead developer for an energy company, involved in a Lotus Notes to .NET Migration.

There are roughly 80 applications, some targeted for SharePoint 2007, some custom ASP.NET, and some Windows Forms.

We decided to use SubSonic for data access.  Most of my readers know that I’m a DDD bigot and prefer persistence ignorant business entities and yada-yada-yada.  But sometimes you just have a simple domain model and there’s no reason to go into the effort of introducing NHibernate on a team that’s unfamiliar with ORM’s in general.  (NHibernate just has too steep of a learning curve).  SubSonic shines with simple domain models, and it allows us to be very productive very quickly.

In retrospect I think I would have favored using Castle ActiveRecord.  We wouldn’t benefit from code-gen unless we made some custom templates for CodeSmith, but the main point would be that we can decouple the database from the application code.  It turned out that some database naming standards were in place that favored very common abbreviations for just about any type of database column.  This resulted in polluting our object model with poor names and I implemented a cheap work-around using partial classes and vanity properties.  But the stink is still present .

We’re also using Team System, which is a less than desirable experience in my opinion.  TFS SCC is okay, but it’s no Subversion.  We do our database development with DB Pro and I’ve found that to be both a blessing and a hinderance.  I’m starting to realize that with all of this tooling that MSFT is selling, a better experience can be had with a bit of patience, process maturity, and some open source software.

Where’s all the good info on DB Pro anyway?  All I’ve found are press release/feature list blogs and links to marketing material.

For testing we’re using MSTest, and if I had it my way I’d rip it all out and replace it with NUnit.  MSTest is more annoying than its worth, and we’re not using any of the build quality features anyway, so we wouldn’t be missing out on anything.  I use TestDriven.NET so I never even see the VS Test Runner.

For the build process we use NAnt, but we haven’t setup continuous integration.  Why?  Frankly because I haven’t had the time.  (I can hear the argument that I don’t have time NOT to already).  I have targets setup to build up the database (both incremental and from scratch), generate code with SubSonicCommander, compile all of the source and run the tests.  Continuous Integration is the next logical step, and I hope I can implement it soon.

In summary, here are the tools, frameworks and libraries that I’m using:

  • SubSonic
  • NAnt
  • WCF
  • VSTS 2005 + DB Pro
  • TFS Source Control
  • Prototype / Scriptaculous (for most ajax and dhtml stuff)
  • ASP.NET Ajax / Control Toolkit (for UpdatePanel and the Calendar)
  • MSTest (yuck)
  • Enterprise Library Logging
  • RhinoMocks
  • TestDriven.NET
  • Console2!

To get this thing spreading like wild-fire, I’m going to tag…

Jason Meredith
Evan Hoff
Bil Simser
Justice Gray (keep it professional Justice!  No weekend details!)
Peter Seale

…get to it guys!  What do YOU do?