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,317 | Comments: 46,912

filter by tags archive

Phone shots

time to read 1 min | 155 words

I just discovered the usb cable that allows me to connect the cellular phone to the computer, so I am going through the pictures I have taken. The end result is that I am about to subject you to several pictures I have taken in the last six months or so.

 From the Agile FDD Talk


I assume that I am Herd because "I am legion" :-) This gets really funny when taken out of context.

From the store


Click on the link to see, it is a Tube of Vodka. Instant Liven Transplant is required after consuming this.

From Microsoft


Do you need an introduction?

Back from the Microsoft Developers Academy

time to read 1 min | 128 words

I gave my IoC talk, and I got some good feedback. I have a hard time evaluating myself in this matter, there was a lot more power point that I usually like, and not enough code. I did get some involvement from the crowd, including some fairly interesting quetsions. I'll wait to get the official feedbacks.

I also took part in a couple of panels, and just because I could, some OSS work when I had free time. I liked the irony :-).

I'm dead tired, so this is probably going to be it today, to everyone that mailed me with patches, bugs, etc. I saw it, but I probably won't respond until the weekend.


Is Linq For Mortals?

time to read 2 min | 228 words

Mike Taulty has posted about Linq syntax, at the end, he shows a simple way to do joins and then aggregation between two collections. The code looks like this:

var a = products.Join(
        p => p.Id,
        s => s.ProductId,
      (p,s) => new { Country=s.Country, Sales=s.Sales, Product=p.Name })
.GroupBy( p => new { p.Country, p.Product })
.Select( gp => new { gp.Key, TotalSales = gp.Sum(s => s.Sales) });

I am sorry, but I cant read this. I can't even understand what this is meant to do. Now, I am the first to admit that my knowledge of Linq is weak at best, but still... Assume that I have a bug in such a code, how do I debug it?

That is a much bigger concern to me, I am not worried about learning the new stuff, I am worried about what I need to do when they break. I have some experiance in debugging applications via Reflector, and that is not nice. Especially if the compiler is doing funky magic and you are left reading the IL.

NHibernate In Action

time to read 1 min | 95 words

Looks like Ben Scheirman have found the big secret.

Just one question, what is this picture or?

Aside from that, I can say that Hibernate in Action is a the best for anyone developing NHibernate. With the advent of NHibernate in Action, it is going to be even easier (no need to mentally translate from Java and EJBs anymore).

I am looking forward to July 1th, when this book is coming out.

Coding Metrics

time to read 1 min | 152 words

Take a look at those:

Castle: (removed image)

Rhino Tools: (removed image)

I run Ohloh before, but this time it is for my own stuff, and it looks like my Rhino Tools projects is over 70,000 Lines of code, and is worth close to 1 million dollars. I find it interesting that it is valued at 17 man years, though :-)

If you can't see the metrics below, your client doesn't allow javascript, go to the website and you'll be able to see them.

Microsoft Academy Insights

time to read 1 min | 116 words

Since I am giving a talk, I also have access to all the presentations ahead of time, and I spent some time going through them. Some people has clearly spent a lot of time trying to turn Power Point into Maya 3D. Anyway, I am seeing some really cool stuff there, things that make me want to start coding.

I am giving a talk and participating in two panels, so I probably won't be able to see the talks (will have to wait for the videos), but it certainly makes sure that I would need some spare time after this is over to go over some of those talks.

The Zen Of Python

time to read 2 min | 371 words

I opened the python shell and entered "import this", here is what came out:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

I like it. ;-)

My Debugger is Broken

time to read 1 min | 97 words

I started to get errors like this recently, and the whole debugging experiance has gone to the toilet ever since.


Specifically, it looks like it is not able to do break on exception now. And I can't figure out what it the issue. It happens just when I am using TestDriven.Net, and not when I am attach to a different process. Right now it seems to have fixed itself, but it drove me mad.

Googling doesn't find anything useful :-(

On Hiring Bloggers and Open Source Developers

time to read 1 min | 142 words

Phil Haack has a post On Hiring Bloggers and Open Source Developers. I guess that I have no choice but to +1.

And if you get the joke, I would like to hire you.

In a recent inteview I had a candidate that had serious issues with:

  • Writing an INSERT statement
  • Reversing a string
  • Searching google*

* That is a skill that you need to have. If you are searching for Reversing a String in C# and you manages to go to the only example I C in the page, that is a major minor point.


  1. RavenDB Conference videos: Zapping ever faster: how Zap sped up by two orders of magnitude using RavenDB - 9 hours from now
  2. Feature intersection bugs are the hardest to predict - about one day from now
  3. RavenDB Conference videos: Implementing CQRS and Event Sourcing with RavenDB - 2 days from now
  4. How did the milk get to the fridge? - 3 days from now
  5. RavenDB Conference videos: Building Codealike: a journey into the developers analytics world - 6 days from now

And 9 more posts are pending...

There are posts all the way to Mar 10, 2017


  1. RavenDB Conference videos (12):
    17 Feb 2017 - Should I use a document database?
  2. Low level Voron optimizations (5):
    20 Feb 2017 - Recyclers do it over and over again.
  3. Implementing low level trie (4):
    26 Jan 2017 - Digging into the C++ impl
  4. Answer (9):
    20 Jan 2017 - What does this code do?
  5. Challenge (48):
    19 Jan 2017 - What does this code do?
View all series



Main feed Feed Stats
Comments feed   Comments Feed Stats