I've been working on building a really great web application using ASP.NET 2.0 over the past three months, and I needed a really great tool to make building the site easier. I tested a bunch of other tools (though I won't name them cause I'll get flamed), and I just wasn't satisfied. Not wanting to have to write any more code than I had to, I wanted to be able to design a platform that would allow me to easily change things as the requirements got more complex.
Enter CodeSmith. I'd heard a bunch of people rave about it, but I never really gave it a shot before. So I installed it, and as I started my trial, there was XHEO's Licensing component to taunt me. You see, I love XHEO's unreleased OR system. But unreleased = unsupported, and Paul's gung-ho on his anti-ILDASM technology, so I'm not holding my breath.
Anyways, I got it going, and was impressed. The IDE feels a little childish to me, and I was rather pissed that it didn't support VS2005 or .NET 2.0 language options, but oh well. The learning curve on the API was a tad steep too, but I picked it up pretty quickly. Soon, I had generated all of my SPROCS with ease.
But then my head started spinning when I thought of all the data access code I'd have to write. So I tried out some of the built-in templates, but I didn't like their access architecture. I'm a huge fan of the Provider Model, and I don't like data access code in the same class as the object properties. Yeah, it's nice to be able to call Object.Save(), but's it's just as nice to call ObjectManager.Save(object).
So I built myself a template to generate an ObjectManager. Then I wrote a template to generate all the Object Managers. Then I wrote a template to generate an object. Then I wrote a template to generate all the objects. Then I wrote a template to generate all the SPROCS, managers, and objects. And when I was done, I generated over 10,000 lines of code in just a few seconds. Not bad for a hard week's work.
In short, CodeSmith helped me do in a week what would have taken a team of 3 developers a month to accomplish. And I know that every single line of code is written to MY standards... something which is usually extremely tedious. I can't believe I waited this long to try it, and now I don't think I'll ever be able to code without it.
Maybe now I'll have time for all those little side projects... ;)