RE: Technology Brainstorm


(Because I often get tired of writing my verbose comments in a 300×300 text

box…)

Colin seems to [find

himself in a pretty good spot](http://colinramsay.co.uk/2007/10/10/technology-brainstorm/trackback/).  The wonderful world of Greenfield

development.  But of course with this comes…decisions.  MVC or Web Forms? 

ActiveRecord or PI (persistent ignorant)?  .NET or Ruby?  (the latter being the

question I’m starting to ask on new projects)

Colin seems to be pretty set on Castle Windsor+MonoRail+ActiveRecord which is

a wonderful combination.  The simplicity of AR is just dang nice.  And with

things like the ActiveRecordMediator in Castle and the Repository

techniques made popular by Ayende, it seems like you can remove some of the

“persistence tax” from your entities while still remaining pretty simple.  I say

“it seems like” because unfortunately I haven’t had a chance to try out

ActiveRecordMediator+Repository on my own yet.  But it looks very

attractive.

I still struggle with the decision between MR+AR vs. MR+PI (persistent

ignorant) myself, in the .NET world at least.  (I’m finding this decision in a

dynamic language like Ruby to be a whole different kind of conversation

though.)  The purist in me wants to have a 100% “pure” domain model and not let

any of that pesky “infrastructure” stuff pollute my precious domain model.  And

then the simplicityness (yes, I made that up) in me says “is that really

necessary?”.  Eric Evans himself recently [said he

noticed a lot of overuse of DDD](http://www.infoq.com/interviews/domain-driven-design-eric-evans), which I admit to being guilty of.  But, I’m

still learning (something I hope I’m always doing…)

So since Colin asked for suggestions, here are a couple things I’d look into

for use on a brand new MR project (most of which I haven’t used yet…):

  • [Castle

    Generator](http://macournoyer.wordpress.com/category/castle/generator/) (Scaffolding, project file(s) builder, .NET DB Migrations)

  • [Castle

    Contrib Code Generation](http://using.castleproject.org/display/Contrib/Castle.Tools.CodeGenerator) (strongly typed property bags/flash…I really need

    to start using this!)

Oh, and I absolutely agree on using Windsor from the start.  That’s what I’ve

done on my current project and you start getting giggly once you realize how

easy it is to shift responsibilities among classes.  Not to mention the nice

decorator chains that can be created to help you adhere closer to OCP.

That’s it for now.  After all, this was just supposed to be

a comment.  🙂

Funny question and response of the day