Oren Eini

CEO of RavenDB

a NoSQL Open Source Document Database

Get in touch with me:

oren@ravendb.net +972 52-548-6969

Posts: 7,616
|
Comments: 51,246
Privacy Policy · Terms
filter by tags archive
time to read 6 min | 1196 words

Chris Holmes responded to my post about not liking the P&P stuff. Specifically, he takes offence at my dismissal of CAB:

It’s possible that Ayende thinks it’s just a bloated IoC container not worthy to lick Castle’s boots.

I wouldn't phrase it like that, even if I would have agreed to this statement. I think that ObjectBuilder has a long way to go before it has feature parity with Castle Windsor, but that is different than "bloated... ... not worthy of licking my boots... ". Let us not dramatise this issue needlessly.

Now to the rest of the post. I am an ornery bastard, so I am going to go over a lot of the stuff that Chris mentioned that I think deserves a response. That is not everything by a long shot, but I am catching on my RSS/Email after 21 hours of travel, so I got my excuses.

Yes, we could sit down and write our own framework and it undoubtedly would be more lightweight than the CAB because it would serve just our purposes and not attempt to solve anyone else’s problems. But that takes time.

Not really, you implement what you need, and that is much less of what the CAB is trying to do. You would also build it while using it, which tend to give you much more real-world design, with all the rough spots removed or hidden.

Would it be acceptable for them to build Enterprise Library using Castle Windsor?

From a corporate culture alone, I would say that they can't do that. While the choice of tools would certainly affect the way the end result would be built, I don't think that it would significantly change the final product.

The fact that P&P has built their own tools, like ObjectBuilder and the Policy Injection Block, seems like an unfair reason to condemn the whole Enterprise Library. Like saying, “one aspect of this thing sucks, so the whole thing is useless to me.”

Actually, when the building blocks are not stable, there isn't much hope for the building. But that is just to debacle the statement, not to trash talk everything else.

Of course, that’s pretty Ayend’s modus operandi. If something is of no value to him personally, it must suck.

That is news to me, and frankly I find it offensive. I will say that something sucks if trying to use it will cause pain, not if it doesn't bring me any value.

When I read Ayende say that the P&P’s tools are “extremely complex” and “hard to use” I almost can’t believe it. Ayende is a smart guy. So how come he can’t grok Enterprise Library and the simplicity of the tools?

Thanks :-). What am I talking about when I am talking about complexing and hard to use is relative to the problem at hand. I want the simplest solution possible, because trying to solve business problems with pesky clients, hard time limits and changing requirements is hard enough. Simplicity is a goal we should all strive for. That is not to say that you should choose a solution that is too simple, because that would hinder your ability to handle the business scenario.

Here is a good metric that I like to use. Take an technology, and try to build it without any tool assistance. Is it still a good approach? If not, then there it is complex and hard to use. A lot of UI frameworks fails this test, by the way. WinForms certainly does, when you start to think about complex UI.

Ayende’s suggestion is often: cobble together your own solution.

Code word of the day: cobble. I had it thrown at me in the TFS vs. OSS stack as well. I am not a native english speaker, but I do believe that this carries with it negative conotations. My response to this: Mu.

How many developers need a framework like CAB?

Very few, actually. Better to ask, how many developers need a framework to help use MVC in WinForms, and the number would be very high (at least among the developers that know what MVC is). Frankly, I am not sure that an MVC framework is even needed in WinForms. You can probably get away with declerative event wiring alone, and even that I would keep to the more complex applications. MVC architecture I would start by default for everything but the smallest stuff, but MVC framework is not something that I would just start building.

I guess, more than anything, I’m just jealous of Ayende. I wish I were as smart and fast as he is. Because I know it would take me a lot longer than half a day to build a framework like CAB that had all of the features that CAB has.

You have nothing to be jealous about. I will let you in on my secret.

How to build the CAB in half a day: Don't build the CAB.

My main objection to the CAB is that it is too big and invasive. I wouldn't even try to do the same. My approach for this would be a lot simpler, a lot less powerful, and be easier to get starting with. I would grow it with need, so it is shaped by actual business need, not by BDUF though process.

time to read 1 min | 163 words

I just tried to visit this URL: http://pauloquicoli.spaces.live.com/Blog/ in FireFox, I get this message:

Sorry, we are unable to complete your task at this time. The Windows Live Spaces service is experiencing difficulties. Please try your task again later.

In IE, it works as expected. WTF?!

Update:

Looks like this was the issue, I had this cookie
Name: sc_stgclstbl_107
Value:
YjdmOTYxYjQyMjYyNWJkZjE6Rzk2bmRvVzA3WlF6UldO
YlZiNWpnZC9uSkZ2SzVhWHRkSW9iK2RR
T3E4R2lTbUM4cytUSGdKUFZNaVJpY2tkSTYrZC9takRvc09RPQ

The value is not valid base64, appernatly, which is what caused the issue.
time to read 1 min | 181 words

I burst out laughing when I read this:

I don’t know where Ayende works or what sort of environment he works in, but I know he gets a lot of time to blog and maintain his own open source mock framework. Not everyone has that luxery. We have to get real work done under time constraints. We have customers who expect results yesterday. We’re in the trenches trying to implement features for customers who have unrealistic expectations about when things should get done.

Just to point out, I don't "get" a lot of time to blog and maintain my OSS efforts. I put the time for those from my own time, not my employer's time. I do it because it is a hobby and I like it. Time constraints, pissy customers and unrealistic expectations are the reason for a lot of the things that I do.

Agile Tools

time to read 2 min | 210 words

It was fairly hard to find anyone in the Agile Track in DevTeach that wasn't using ReSharper. 100% of the presenters are using this, and have shown (and praised), ReSharper during their talk. Considerring that JetBrains wasn't involved in any of that, it says quite a bit. I think that the competetive advantage that ReSharper has over all other teams when selling to the Agile users is that they get it. ReSharper make it easier (frankly, possible) to me to work in the way that I find best practice. (As an aside, that was probably a huge miss on JetBrains' PR side, not being there.) The other tools that everyone used was TestDriven.Net, again, for the same reason, because it is the original zero friction tool, and it allows us to work more easily.

Beyond those, I can't think of anything else that came up repeatedly. Roy's passion for Final Builder was noted, but it is not something that I would call an Agile-Enabling tool.

Are you familiar with tools of the same calibar of ReSharper for the Agile practitioner in .Net? Not framework, mind you, I write enough of those, I am talking about tools.

time to read 3 min | 479 words

I am in Frankfurt right now [couldn't find network connection, so this is actually sent from Israel], waiting for the flight to Israel. Trans atlantic flights are getting very high on my list of things that I really don't like. Nevertheless, even with the burden of the travel, the conference itself was simply fantastic.

  • I stopped at a book store just before I left Canada, and stocked myself with fantasy books. Got a few technical books (Begining Ruby on Rails, Agile development in Java and Windows Rootkits) - I consider all three to be about expanding my horizions than anything else. I am getting too entrenched in my comport zone, I am thinking. To Roy, the technical fantasy book: "The Project That Didn't Fail" - is looking very good, not realistic, of course, but good plot.
  • Back to the conference stuff, the #1 reason to go is the people, hands down. I meet a lot of developers, and the overall quality at DevTeach was very high. The overall friendliness was awesome as well. After we finished all the lectures, we had a party (some speakers and attendees) that lasted for 10 hours and we had had similar parties in the previous two nights. My alcohol consumption level went way up, didn't notice any wierd behavior on my part, but I am not sure that I would.
  • Had a deep conversation with Adam while I was drunk, which I find hilarious now (mostly because of the effort in making myself both coherent and reasonable).
  • Bilingual sucks and I blame Udi. Apperantly I have a tendency to move between languages without noticing at certain points, usually it is only a word or two, but Udi has completely mess with my head with that. It is disturbing when I am talking English by default all of a sudden.
  • I mostly stuck to the agile track, so I didn't learn any new things, but it did make quite a few things clearer, and it was fun to be able to bounce ideas and thoughts off of people.
  • Roy & I managed to get some incriminating statements from Scott, which I have recorded, and will try to make available soon, get ready to start mocking him. :-)
  • Special thanks to Roy, for the "unprovoked CC'ing" and for a lot of help & tips in preparing for the presentations.
time to read 1 min | 181 words

Yesterday I did my Advance IoC talk, which went very well. I actually got to cover not only all that I intended to do, but I got so far ahead that I had to do off-the-cuff coding, which went well until I tried to do some of the more complex stuff, which didn't really work out. That was some pretty hard core presentation.

I did ended a few minutes before I was supposed to, even after taking questions from the audience, so I guess I was not as well prepared as I should have been, and I probably still need to work on the pace that I am talking at.

I will be heading home today, and I really really liked DevTeach. I met a lot of really cool people, had some amazing conversations, and got to put faces on a lot of names that I talk with quite a lot on the blogsphere.

And to think, I thought that Scott Bellware was a serious guy. :-)

time to read 4 min | 601 words

The P&P groups has a lot of stuff that they release to the world, often with a lot of fanfare and people talking about that. I have reached the point that I no longer care about what the P&P guys are doing. Just having them release something, practically guaratees that this is not something that I would like to use.

This has nothing to do with OSS vs. MS or something stupid like that. This has to do with the following reasons:

  • The P&P team doesn't work with their tools on real applications. Basically, these tools are created in vacum, not by having to solve real world problems. And going to a customer and asking about problems and then trying to give something that may solve that is not what I mean. I mean about having to work with a system day in and day out, and having the biggest incentive to smooth all the wrinkles.
  • The stuff that they release almost always build on the naked CLR, it tries to build on top of that something to ease the pains of people who are working with that. The problem is that if you are doing that, you may be making great strides in making a developer life easier, but you are taking them in the completely wrong direction.
  • Marketing. This is related to the next point, a lot of people are pushing this stuff, almost blindly. And Microsoft can dedicate a lot of resources to spread this around (evangelists, posts, articles, etc).
  • Quality vs. brand name. This is a touchy subject, and I would really like to make it clear that I am not saying that the P&P is producing bad code. What I do want to say is that the P&P code does not goes through the same level of scrutiny that real products from Microsoft goes through. In other words, the CLR, for instance, has gone a thorough testing and design effort. The DAAB, on the other hand, has a much lower testing & design effort in comparision. The problem is that people are seeing Microsoft DAAB, and they automatically assume that this has the same quality.
    I can push a code base fairly hard, and the CLR is pretty good about what I can do with it. When I tried to do the same to the P&P stuff, it literally fell apart.

When looking at the stuff that the P&P produce, I see things that are extremely complex to their purpose, hard to use and maintain, and don't really add any value to me from where I stand today. I am not speaking blindly here, it took me 40 minutes to repreduce the policy injection block.

Even if some of the stuff that they are producing has good stuff in it, it is usually in a form too abstract to be readily used. The CAB is a good example, I like some of the ideas there, but it comes with so much weight around it that it is not worth bothering. I can build on the same ideas in half a day and end up with a far more light wieght approach, easily testable and easier to explain to the next developer.

time to read 2 min | 280 words

Consider this scenario, where you need to build a complex application, and political issues says that you have to start from scratch. This means no access to any extrenal libraries (OSS or MS-Provided) ones.

Can you build a complex application that way?

The answer for me would be probably no. I know how I structure my applications today, and I am building them to use best practices approaches for maintainability and testability. There are a lot of tool support out there that I use in order to build my applications, not being able to use that would significantly cripple my ability to build applications.

I couldn't even write those frameworks from scratch, at least not in a reasonable time frame. A basic OR/M layer should take about a week to write, but it would be very basic, and wouldn't support any of the more powerful features that actually makes OR/M attractive (lazy loading & eager loading, for instance). A basic IoC takes two days to write, but it wouldn't allow interception and it wouldn't allow easy extensibility, and support for complex nested dependencies is going to be severly limited.

If you aren't working at that level, you may be able to roll out simple tools, and be successful, but I wouldn't be able to work within those limitation (I am often not able to work within the limitations of the current tools, at which point I extend them :-) ).

Anyway, just a point I wanted to make. Don't bother starting with a blank slate anymore, it is not worth it.

time to read 1 min | 190 words

Not really liking the name of this post, but...

A lot of people are familiar with GoF book, and quite a few people actually take pride in being able to use design patterns. One of the more horrifying indicators for trouble you can get is someone having the GoF book on their table, opened:

GoF-Horror.png

Right now, I consider the GoF book an essential part of the tools that I have in my toolkit, but knowing the GoF patterns is no longer an good indicator for quality, it is usually a sign of "I am following the herd, and design patterns are supposed to be cool..."

Something that I look at far more favorablely is the Patterns of Enterprise Application Architecture book:

This take the concept of design patterns and move them from the class level to the application level, and that is much more meaningful conversation when you are thinking about applications now.

FUTURE POSTS

No future posts left, oh my!

RECENT SERIES

  1. Recording (18):
    29 Sep 2025 - How To Run AI Agents Natively In Your Database
  2. Webinar (8):
    16 Sep 2025 - Building AI Agents in RavenDB
  3. RavenDB 7.1 (7):
    11 Jul 2025 - The Gen AI release
  4. Production postmorterm (2):
    11 Jun 2025 - The rookie server's untimely promotion
  5. RavenDB News (2):
    02 May 2025 - May 2025
View all series

Syndication

Main feed ... ...
Comments feed   ... ...
}