Ayende @ Rahien

It's a girl

More on Macto

Looking at the responses that I got, I think that there is some basic misunderstanding about the goal of the sample. Some people seems to want this to be a usable product, some even went ahead and specified some… interesting requirements.

Unlike Storefront, I don’t intend to create something that would be a useful component to take and use, for the simple reason that I don’t think that it would allow to show anything really interesting. Any generic component or system has to either make too much assumptions (constrained) or not enough (open ended). I don’t care to have to hand wave things too much.

Given that I am a domain expert on exactly two things, and that I am not going to create Yet Another Bug Tracking Application, I think that it is fairly obvious what I have to build.

Macto is going to be a prison management system.

I am going to use it to demonstrate several topics that I have been dealing with lately, among them the concepts & features architecture and how to build scalable systems.

I’ll let you stew on that and will post more details about Macto tomorrow.


07/26/2009 08:00 PM by

My CRM suggestion, that was leading in the polls, was not supposed to be a compete application. It was about having domain and infrastructure requirements that are familiar to most people. That said, a prison management system can work just as well.

I hope the application will include the following tiers/architectures as well as a scalable security model.

  • presentation layer (MVC)

  • service layer (WCF/service bus)

  • domain tier (best DDD practices

  • infrastructure tier (NHibernate best practices)

  • database

07/26/2009 08:55 PM by

I'd like an out of browser Silverlight component that can work offline as well :)

But if not... definitely want to see the user of a service bus implementation as suggested above through WCF would be quite educating.

I say WCF, mostly I want to see how validation occur and updates when using DTO's to the 'disconnected' client - (with a service bus)

Outside of maybe NHibernate (or even NServiceBus), it would be nice to have this fully self-supporting, not needing a big set of 3rd party assemblies. If so, please include them so that 3-6 months down the road it will all still work by pulling it it down and building it.

Ayende Rahien
07/26/2009 09:11 PM by
Ayende Rahien


There is no problem with Silverlight offline, do you see the subtitle of the blog?

Frank Quednau
07/26/2009 09:24 PM by
Frank Quednau

Hm, just before I could post my idea of an Interstellar Logistics Management System. Had some interesting sub-domains.

William Highfield
07/27/2009 01:12 AM by
William Highfield


I am glad to hear that it is going to be more concepts, features architecture and how to build scalable systems sample than about a usable product. I would rather see the concepts of the sample than the actual product anyday.

Anyway I look forward to the up and coming sample.

07/27/2009 01:28 AM by

Yeah, though I would be interested in seeing an example that used particular technologies, I'm really interested to see how you do things the way you do them normally.

I'm thinking some of the interface names for a prison management system could be....interesting.


07/27/2009 01:51 AM by

I think Dmitry suggestion on CRM is a good idea too. It's easy for most people to relate too (hence serving as your domain-expert), and has many problems that are challanging to effective use of ORM.

Many interesting topics that can arise from CRM for example: very complex query (really test capability of ORM here, or how to use ORM effectively), pluggability, rule engine (good to demonstrate DSL), agent-scripting (again, DSL), multi-channel access, long-runing processes (e.g. case-management), and common situations where most data aren't stored in our own RDBMS, but instead in backend systems (so implementing repository is not as simple as plugging ORM).. CRM as a customer-facing system face a challange in how to integrate and share information among many different systems, and synchronization between local datastore with realtime systems.

I think it brings all the gloomy dirty reality of realworld application development instead of a happy path utopian development with straight lines. It would be interesting to see best practices in dealing with these complexities.

Daniel Auger
07/27/2009 02:10 AM by
Daniel Auger

A prison management system eh? I'm elated! As a noob out of school many years ago, I worked on a prison management system designed by other noob's using classic ASP/SQL7. I think it is a rich domain that has a lot of of areas that apply to general business programing.

Scott Muc
07/27/2009 03:23 AM by
Scott Muc

I like this idea. What makes it great for everyone is that not no one is going to be an expert on the Domain so it will be a great example on how to create components that don't leak the Domain into other things.

If I'm able to grab your authentication code and not have to pull any Prison Domain dependencies then you've provided excellent decoupled code.

Also, if I see how that you have that I want to use but it has Prison like artifacts in it, then it's a good example of something that I should not over generalize in my own code.

07/27/2009 10:09 AM by

Whatever the example is I am hoping to see a good demonstration of DSL, how to deal with concurrency with NHibernate and some caching strategy...

Mark Nijhof
07/27/2009 07:25 PM by
Mark Nijhof

O o now only hope that nobody will take this prison management system example and turn it into a automated office management system controlling when workers can go home and such things.

Looking forward to the series!


Comments have been closed on this topic.