Archive for July, 2009

Writing to the Future Me

Every now and then I find a comment in my code that I’ve completely forgotten about.

When I run across one of these nuggets, I guess I have the same experience as someone who’s kept a journal for months or years. I read the note and think, was that me that wrote that? Did I know that I would come back here again? Was a sending a message to my future self?

// TODO: Improve the quality of these tests. DTHRASHER 6OCT2008
// We need to verify that the filter string is being generated properly.
// We need to add tests to verify sorting behavior.
// We need to separate the ActivityParameters unit tests from the MetaIndex integration tests.
// We need a staff of 10 developers to help us finish this product! ARGH.

These always give me a chuckle.

And then I think, what a jerk that DTHRASHER guy is! I can’t believe he left me all this work to do!

Domain Models in High Performance Systems

I skipped today’s DC Alt.NET meeting on JavaScript. With the other half of the Infovark tech team on vacation, I’m holding down the fort.

Fortunately, I was able to expand my programming knowledge by catching up on my blog reading, and particularly by watching Greg Young of IMIS give a presentation called Unshackle Your Domain at QCon in June.

If you’ve ever had to built a high-performance system or one that has strict auditing and reporting requirements, this presentation is for you. Greg’s company deals with financial systems, and you can tell he’s learned many best practices the hard way.

While I doubt we’ll need an architecture as robust as he describes for Infovark, I recognize many of the the problems and patterns he describes from my old jobs in software companies making records management software (auditing) and real estate systems (transactions and reporting).

The key insight is that for certain software solutions, it’s important to model state transitions as part of the problem domain.

But what I found most interesting was how his example system combined the principles of Domain-Driven Design with the older notion of Command-Query Separation.

I’d explain in more detail, but it’d probably be easier to just watch the presentation yourself.