Ayende @ Rahien

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


+972 52-548-6969

, @ Q c

Posts: 6,481 | Comments: 47,778

filter by tags archive

New Rhino Mocks Logo

time to read 1 min | 95 words

Here is a beautiful logo that Romeliz Valenciano has sent in response to my post about advertising Rhino Mocks.


Here it is at 120x90, with the text that I am thinking about:


A dynamic mock object framework for the .Net platform. Rhino Mocks eases testing by allowing creation of mock implementations of custom objects and verifying interactions between them.





Update: Updated ad text with Geoff & Sneal suggestions.

Theoretical architects

time to read 3 min | 547 words

This is another response to The Daily WTF post. This time, I wanted to talk about the last part of the post, the architect reply interviews. Here is how it starts:

Note: Based on my understanding, the purpose of these low-level programming questions is to draw out the participant’s knowledge and usage of reference materials and web knowledge-base searches to derive the answers, demonstrating his approach and thought process.  My role as IT Architect for the past 8.5+ years has been to focus on the bigger picture and higher-level architect and design issues that solve specific business problems, so I don’t know the answers to these specific programming questions off-hand...

At this point, I have alarms bells going all over my head. You can't be a successful architect if you don't know what is happening at the lowest levels. That is like a construction architect saying that they are not interested in validating the strength of a bridge because it impacts their "artistic sense".

I suggest that you will read the whole thing (doc format), it is interesting, in a bizarre way. I agree with the overall methodology that he uses (I had to stop to thing about how to solve the second question), but the actual result is alarming. My impression from that is Do Not Hire, Leech. Leech is a term I use for those people who can't code without hand holding and a group hug. I am willing to bet that this guy would not be able to pass the FizzBuzz test.

Here is another thing that spiked my ire, this comment to the post:

My view of the role of architect, because that is my job title, is that you do the important stuff as well as the high level stuff. The database schema is extremely important so you want to be involved with that, but the code to interface with it? Well I'd write some code so that the minions can use it as a basis for their code if they haven't done it before. Network code as well, unless you have an experienced minion you can trust. But do I want to code piles of business logic? Nope.

Sorry, that is the kind of attitude that will simply irks me to no end. The whole attitude is domineering and repulsive, but "do I want to code piles of business logic? Nope." And then expect the developers to do it? Why the hell are you writing piles of code in the first place?

I interview architects, and it really gets me that some of those guys actually think that coding is somehow beneath them. My expectation from an architect (and I should mention that I do mostly the technical verification side of it) is that they can discuss everything along the line from the high level architecture to the implementation details that can affect it. My favorite question in this regard is designing a grid, and the best interviewees were able to discuss making it fault tolerant and scalable at the high level and face issue in the Assembly.Load context.

Sorry, but if you don't code, you can't be an architect. There is not such thing as theoretical architects.

I feel better now that I let it out.

How to kill the community feedback, or, the uselessness of Microsoft Connect

time to read 3 min | 482 words

I just got this in an email:

Did you go to Microsoft Connect and supply feedback about the things you don't like about the product? That may be received better than a rant.

I feel like I should explain better what I think about this. Broadly, I see it as a dead end path, since there is no real way for me as the reporter, to do anything about it except to report it. The main issue here is that a lot of those bugs are being closed for what looks like ridiculous reasons. Eventually, it lead to the belief that there isn't much point in connect, since there isn't any feedback about it, nor any way to get the results back if it it fixed, at least not until the next release. And yes, I know about hotfixes, that doesn't help me when I want a bug fix that affects Rhino Mocks. But that is assuming that the bug was fixed.  I believe that I had one good experience with connect, here, where I reported a bug and it would be closed on Orcas.

A somewhat random selection of issues that I didn't like...



Basically, the problem is that the feedback loop is broken, it goes only one way. And I am sure that I am not the only one that remembers the flurry of bulk closing of bugs as "By Design" near VS 2005 Beta 2 & Launch. The problem is not that some of those things are by design, the problem is that the design is broken.

So, the best scenario for me is to report a bug to connect, hope that it wouldn't get ignored, and assuming it is fixed, wait for the next release cycle to get it. Oh, and often enough it get postponed, so I may have to wait two (or more) release cycles to get the fix.

Sorry, but that doesn't really encourage me to do anything with it.

Random Trivia

time to read 1 min | 79 words

  • I am apparently the first Google result for "How to make a complete fool of yourself", not really flattering.
  • The web-cast about Implementing The Event Broker got 92,835 (!) downloads, more than all the rest combined.
  • I have a terrible memory for certain stuff, I literally can speak to a person. make a commitment, close the phone and then completely forget the conversation until about 10 hours later, at which point I really need to apologize.

Advertising Rhino Mocks

time to read 2 min | 225 words

I have been offered an opportunity to advertise Rhino Mocks in TheLounge Open Source room. What is TheLounge? It is a new advertising network that seems very interesting which I am going to add to the site & blog. But that is not the point of this post, you can read about how it works here, if it interests you.

The point of this post is that I need to supply a 120x90 image and up to 100 words for an advertisement for Rhino Mocks, and I have no idea where to start. You can see below my best 120x90 creation, and that is not something that I would really like to release into the wild :-)

image Beyond that, I can't really think of a short message that would both describe Rhino Mocks and will not sound so marketly that I would instant gloss over it.

So, that is where you come in, I would appreciate any suggestions about the text of the ad, and if you can suggest an image as well, I would be delighted.

You can see the current OSS room ads in the Lounge home page, currently they serve SubText, BlogEngine.Net and BlogML (that I have noticed), and I would really like the extra exposure.

Thanks in advance,


Presentation Logic & Semi Integration Tests

time to read 2 min | 397 words

Scott has an interesting view about my post regarding testing presentation logic:

However, his answer to this issue involves basically executing a dynamic page (in MonoRail) and testing the HTML output.  He admits that this is a "semi-integration test".  I would agree with that, except for the "semi" part.  If I really wanted to execute a page at the unit testing stage, I could use a tool like NUnitAsp, which operates at the same level of abstraction as ASP.NET server controls and thus insulates the test code somewhat from the actual rendered HTML markup.

I call it semi integration test because the only part of the code that I exercise is the view code, and it is integration because I have to verify the textual result, rather than the objects themselves.

Scott's suggestion about using something like NUnitAsp is a true integration test, because it execute the entire pipeline, including the controller, data access, etc. That is not the purpose of the test, I just want to validate presentation code, not the whole thing. NUnitAsp is also not applicable because it uses WebForms, which is not something that I willingly use.

Another very good point Scott is making:

Finally, forget testability for a minute and consider something I was taking for granted.  Continuing with the banded report example, what happens when the subtotals are needed in a different view?  Or in the output of a web service?  If that calculation is buried inside a specific view, look at the bright side:  At least you'll have plenty of opportunity to practice your refactoring.

If I need it in more than a single place, then it would be the time to consider refactoring. If I needed it in another view, I would probably refactor to a subview, which is a ridiculously easy to do. I doubt that I would need to do it in a web services, since that is calculable information, and would usually cause more harm than good.

At any rate, I feel that pushing this to the domain level is not something that I would really want to do, it is purely presentation logic, meant for the user, without any correlation to the domain. If I had to use it in several places, I would a presentation layer class that would take care of it, but that is still presentation logic.

ReSSIS - 15 Faults Rebuttal

time to read 3 min | 476 words

Seems like this is the new trend right now :-) Phil Brammer has posted a rebuttal to my original post. Here are my answers:

Bad Errors:
You have to understand though, that this isn’t .Net.  SSIS has many components/engines at work that obtaining the correct error isn’t always at the heart of the SSIS engine.  It could be a database error.  It could be an ADO error.  Whatever it may be, I agree, some are cryptic, but I’ve generally been able to diagnose my errors.  And if there is an error I don’t know about, I contact the community and finally Microsoft through product support.

Error handling is a key part of any platform, this should be a first level concern, that it "isn't always at the heart of the SSIS engine" is a serious issue. Errors happens, and I need to know the entire chain of issues in order to figure how to fix it. To clarify how important that is to me, I am using .Net because it has exceptions, rather than HRESULT.

Random Errors:
The fact these are random should banish this item from your “SSIS 15 Faults” list.

The product sometimes gives an error, for no deterministic reason, and you consider this a non issue?

Keeping track of what it shouldn’t:
Never had this happen.  NEVER.  NEVER, NEVER, NEVER, NEVER.  Did I make my point? 

Yeah, your point is "It works on my machine".

Sorry excuse for deployment:
I don’t understand any of the points made here.  Deploying to a server has never been a problem.  It is in the manual that metadata cannot change between databases/tables.  So if you’re moving to an environment that has its metadata different than another, you need to reconcile that first. 

I had the package fail with validation errors when moving to production when the DB schema was identical, invalid meta data errors. I don't want to reconcile anything, the schema is identical for the tables that I am working on. And let me point out that "it is in the manual" carry little weight with me, I am disliking the need, not disputing its documentation.

UI Formatting instructions:
Ah, well, what would you say if the SSIS dev team decided to make SSIS packages binary?  THEN WHAT?  At least you have an XML file that can be parsed.

Uh, you do realize that for all intents and purposes, the file is binary, right? The fact that it happens to be XML based doesn't make it human readable, source control friendly or diffable. All of the above are critical to development.

Bad interoperability:
Is your Oracle example an SSIS problem, or the Oracle driver’s problem?????????

That is probably an SSIS error, but see my previous point about bad errors to know what I am not sure.

Free doesn't give it a license to suck

time to read 2 min | 215 words

Phil Brammer has a posted a comment here that really annoy me, rebuting

To Adolf...  You wrote, "It's the windows 98 of the database world."  B.S.!!  It's free.  Go buy Informatica or something.  Jamie's comment regarding the budget is true.  These guys built a product right out of the gate to fulfill an ETL space in their tool belt.  They did it, and packaged it with SQL Server.  You buy SQL Server you get SSIS.  Pretty neat, huh!  So until you have to pay for it, it's a touch absurd to say this product sucks.  It's pretty dang powerful (you mean I can program in .Net INSIDE my SSIS package?!?!?) for a first generation product.

This annoys me because it assumes that "free with SQL Server" is a license to suck. SSIS isn't free, by the way, it is part of the SQL package, which cost quite a bit. Even beyond that, it isn't free in the most important term I can think of, it is wasting my time.

Oh, and I am decidedly unimpressed with being able to run .Net in my SSIS package, that is an ability that I can add to an existing application in an hour, so that is not any reason to get excited.


  1. Giving Demeter PTSD - 9 hours from now
  2. PR Review: Code has cost, justify it - about one day from now
  3. PR Review: Beware the things you can’t see - 4 days from now
  4. The right thing and what the user expect to happen are completely unrelated - 5 days from now
  5. PR Review: It’s the error handling, again - 6 days from now

There are posts all the way to Oct 25, 2017


  1. PR Review (7):
    10 Aug 2017 - Errors, errors and more errors
  2. RavenDB 4.0 (15):
    13 Oct 2017 - Interlocked distributed operations
  3. re (21):
    10 Oct 2017 - Entity Framework Core performance tuning–Part III
  4. RavenDB 4.0 Unsung Heroes (5):
    05 Oct 2017 - The design of the security error flow
  5. Writing SSL Proxy (2):
    27 Sep 2017 - Part II, delegating authentication
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats