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,125 | Comments: 45,492

filter by tags archive

The NIH dance

time to read 2 min | 356 words

I started thinking about all the type of stuff that I had to write or participated at, and I find it… interesting.

  1. Database – Rhino.DivanDB (hobby project).
  2. Data Access – Multitude of those.
  3. OR/M – NHibernate, obviously, but a few others as well.
  4. Distributed caching systems – NMemcached – several of those.
  5. Distributed queuing systems – Rhino Queues actually have ~7 different implementations.
  6. Distributed hash table – Rhino DHT is in production.
  7. Persistent hash tables – Rhino PHT, of course, but I actually had to write a different implementation for the profiler as well.
  8. Mocking framework – Rhino Mocks, obviously.
  9. Web frameworks– I am referring to MonoRail, although I only dabbled there, to be truthful. Rhino Igloo was a lot of fun, too, if only because I had to.
  10. Text templating language – Brail
  11. Inversion of Control containers – Windsor, and a few custom ones.
  12. AOP – I actually built several implementation, the most fun was with the Code DOM approach :-)
  13. Dynamic Proxies & IL weaving – Castle Dynamic Proxy, not the recommended way to learn IL, I must say.
  14. CMS systems – several, but I really like Impleo and the concept behind it.
  15. ETL system – Took 3 times to get right.
  16. Security system – Rhino Security was fun to design, and quite interesting to implement.
  17. Licensing framework – because trying to buy one commercially just didn’t work.
  18. Service Bus – which I consider to be one of my best coding efforts.
  19. CI Server – so I can get good GitHub integration.
  20. Domain Specific Language framework – well, I did write the book on that :-)
  21. Source control server – SvnBridge

I haven’t written a testing framework, though.

I am probably forgetting a lot of stuff, actually…



ETL system – Took 3 times to get righ

Is the right approach shown in your DSL book?

Joannes Vermorel

NIH is a widespread antispattern that should be avoided at all cost. One of the few known exception to this rule is known as the "ayende" exception, because "ayende" happens to improve stuff he reinvents. The "ayende" exception should kept confidential because way too many people tend to think they can be an "ayende" exception too :-)


Wow, lots of stuff. Implementing was probably a pleasure but how do you feel about maintaining and bug-fixing all of it?


And you still manage to find time for eating, sleeping, writing posts and have some sort of social live? That would be the real amazing thing about this list!


Castle, NH (with NHProf) and Rhino Mocks are mandatory in my projects now. I've just code spiked Rhino Security and I love what I've seen. Also, I can see myself checking out Rhino ETL in the future.

So a big thank you for making my development work look a whole lot better than it ever would have been.

Grimace of Despair

You know, you can get medical treatment for this...

Demis Bellot

NIH is a widespread antispattern

I disagree, there's usually a cost/benefit ratio whenever you need to choose to NIH or not. It normally costs you the time to develop and a reduced number of features but it saves you some time learning someone else's api .

Another benefit to rolling your own, is that you'll know your software intimately, how it works/performs so when there is a bug rather than trolling through forums looking or waiting for a fix you can do it yourself.


Better get started on that testing framework then, Ayende ;)


i don't know how you find the time. between paying clients, fluentmigrator, occasional blogging, 2 side projects, and my family, i just don't have time for much else. let alone all that you are involved in.


What is NIH means ?


Good you haven't started on compiler and build system...

Ayende Rahien


I DID do a build system, I just remembered.

And while it isn't full blown compiler, I would say that my DSL work is pretty close


Good for you, good. for. you.


At least I hope you haven't done the ultimate developer NIH - IDE :)


Rhino OS :)


Does this IDE has ASharper as well?

Ayende Rahien


No :-)

Admittedly, I did implement Ctrl+Alt+V (Extract Business Term) in one IDE, but that is about it.

Kevin Stevens

Are you going to bootstrap TDD your testing framework, like the original LISP compiler?


Was curious what SVNBridge was so i googled it and saw it on codeplex.

I realise you don't support it, lost interest?

Could you list the stuff you've written that you support?


It's easy with no steady girlfriend, wife, or kids to please.

Gosh I remember those days. Eat code, eat code, eat code, sleep a litte, code, then code some more. Then got married. Eat, code, listen to bitching, do crap to shut her up, then back to coding. For some reason she thinks I like my computer more than her.

Comment preview

Comments have been closed on this topic.


  1. RavenDB 3.5 whirl wind tour: I'll have the 3+1 goodies to go, please - 3 days from now
  2. The design of RavenDB 4.0: Voron has a one track mind - 4 days from now
  3. RavenDB 3.5 whirl wind tour: Digging deep into the internals - 5 days from now
  4. The design of RavenDB 4.0: Separation of indexes and documents - 6 days from now
  5. RavenDB 3.5 whirl wind tour: Deeper insights to indexing - 7 days from now

And 10 more posts are pending...

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    05 May 2016 - Physically segregating collections
  2. RavenDB 3.5 whirl wind tour (14):
    04 May 2016 - I’ll find who is taking my I/O bandwidth and they SHALL pay
  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