Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,128 | Comments: 45,549

filter by tags archive

More on Macto

time to read 2 min | 202 words

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.



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


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


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

Frank Quednau

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

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.


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.



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

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

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.


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

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!


Comment preview

Comments have been closed on this topic.


  1. The worker pattern - 2 days from now

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats