Ayende @ Rahien

It's a girl

You need to control the stack

I have a fairly strong opinions about the way I build software, and I rarely want to compromise on them. When I want to build good software, I tend to do this with the hindsight of what is not working. As such, I tend to be... demanding from the tools that I use.

What follows are a list of commits logs that I can directly correlate to requirements from Rhino Security. All of them are from the last week or so.


  • Applying patch (with modifications) from Jesse Napier, to support unlocking collections from the cache.
  • Adding tests to 2nd level cache.
  • Applying patch from Roger Kratz, performance improvements on Guid types.
  • Fixing javaism in dialect method. Supporting subselects and limits in SQLite
  • Adding supporting for paging sub queries.
  • Need to handle the generic version of dictionaries as well.
  • Override values in source if they already exist when copying values from dictionary
  • Adding the ability to specify a where parameter on the table generator, which allows to use a single table for all the entities.
  • Fixing bug that occurs when loading two many to many collection eagerly from the same table, where one of them is null.


  • Fixing the build, will not add an interceptor twice when it was already added by a facility
  • Generic components will take their lifecycle / interceptors from the parent generic handler instead of the currently resolving handler.
  • Adding ModelValidated event, to allow external frameworks to modify the model before the HBM is generated.
  • We shouldn't override the original exception stack

Rhino Tools

  • Adding tests for With.QueryCache(), making sure that With.QueryCache() can be entered recursively. Increased timeout of AsyncBulkInsertAppenderTestFixture so it can actually run on my pitiful laptop.
  • Adding support for INHibernateInitializationAware in ARUnitOfWorkTestContext
  • Adding error handling for AllAssemblies. Adding a way to execute an IConfigurationRunner instance that was pre-compiled.
  • Will not eager load assemblies any more, cause too many problems with missing references that are still valid to run

Without those modifications, I would probably have been able to build the solution I wanted, but it would have to work around those issues. By having control the entire breadth and width or the stack, I can make sure that my solution is ideally suited to what I think is the best approach. As an aside, it turn out that other people tend to benefit from that.


01/24/2008 05:12 PM by

What if you cannot ? What if you have to stick with standard Microsoft .Net libraries ? :)

Let's say you're allowed to use the latest .Net 3.5 libs, Ajax extensions, Enterprise Library, Software Factories, or any of the P&P guidances, but cannot use any 'non-Microsoft' libs ... how would you design a 'classical' web application that would pass your 'good software' certification ?

Ayende Rahien
01/24/2008 06:17 PM by
Ayende Rahien


01/25/2008 09:30 AM by

Just found what I was looking for : http://www.backgrounmotion.com

01/25/2008 09:32 AM by

Ooops, works better with a 'd' :)


Ayende Rahien
01/25/2008 09:32 AM by
Ayende Rahien

Did you mean?


I am not following the connection

01/25/2008 10:01 AM by

This is a sample app promoting good design using Ms technologies mainly ... see here:


For scenarii where you just 'cannot' use your favorite open source libs (customer doesn't want) ... it still looks pretty good.

Comments have been closed on this topic.