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,026 | Comments: 44,842

filter by tags archive

You need to control the stack

time to read 3 min | 401 words

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.



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



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


Ooops, works better with a 'd' :)


Ayende Rahien

Did you mean?


I am not following the connection


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.

Comment preview

Comments have been closed on this topic.


No future posts left, oh my!


  1. Technical observations from my wife (3):
    13 Nov 2015 - Production issues
  2. Production postmortem (13):
    13 Nov 2015 - The case of the “it is slow on that machine (only)”
  3. Speaking (5):
    09 Nov 2015 - Community talk in Kiev, Ukraine–What does it take to be a good developer
  4. Find the bug (5):
    11 Sep 2015 - The concurrent memory buster
  5. Buffer allocation strategies (3):
    09 Sep 2015 - Bad usage patterns
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats