Ayende @ Rahien's Image

Ayende @ Rahien

http://ayende.com/blog/
More about this blog
Latest Post
28 Mar 2010
Total Posts
147
Readers
3536
Liked
0
Disliked
0
Views-Per-Post
24.05
vote up
0
vote down

That No SQL Things – How to evaluate?

In my posts about the No SQL options, I am going to talk about their usage in two major scenarios, first, at at a logical perspective, what kind of API and interface do they us, and second, what kind of scaling capabilities they have. Almost all data
 
Ayende Rahien
tags: databases
Mar 28 2010 11:45 AM
vote up
0
vote down

That No SQL Thing

Probably the worst thing about relational databases is that they are so good in what they are doing. Good enough to conquer the entire market on data storage and hold it for decades. Wait! That is a bad thing? How? It is a bad thing because relational
 
Ayende Rahien
tags: databases
Mar 27 2010 09:50 AM
vote up
0
vote down

What Amazon considers Fantasy

No, I haven’t checked the actual book, I just found it hilarious
 
Ayende Rahien
tags: humor
Mar 24 2010 01:07 PM
vote up
0
vote down

First look at Raven DB

Yes, I am a tease. And here is how it looks likes when you want to look at the indexes:
 
Ayende Rahien
tags: raven
Mar 23 2010 01:15 PM
vote up
0
vote down

I love ConcurrentDictionary!

Not just because it is concurrent, because of this wonderful method: public class Storage : IStorage { private readonly ConcurrentDictionary<Guid, ConcurrentDictionary<int, List<object>>> values = new ConcurrentDictionary<Guid,
 
Ayende Rahien
tags: c#
Mar 22 2010 01:29 PM
vote up
0
vote down

My Erlang Religious Moment

It is not often that a piece of code cause me to have a religious moment, but this one managed to:
 
Ayende Rahien
Mar 20 2010 01:09 PM
vote up
0
vote down

Software pricing - Don’t Just Roll the Dice

I found this ebook very informative. I very happy to learn that I at least thought about most of the things that the book recommend, but I wish I read it two years ago. If you are an ISVN, I highly recommended, because it is not just some dry academic
 
Ayende Rahien
Mar 17 2010 01:00 PM
vote up
0
vote down

What is map/reduce for, anyway?

Yesterday I gave a visual explanation about map/reduce, and the question came up about how to handle computing navigation instructions using map/reduce. That made it clear that while (I hope) what map/reduce is might be clearer, what it is for is not.
 
Ayende Rahien
Mar 15 2010 12:49 PM
vote up
0
vote down

Map / Reduce – A visual explanation

Map/Reduce is a term commonly thrown about these days, in essence, it is just a way to take a big task and divide it into discrete tasks that can be done in parallel. A common use case for Map/Reduce is in document database, which is why I found myself
 
Ayende Rahien
Mar 14 2010 11:44 PM
vote up
0
vote down

NHibernate symbol & source server support

A symbol server allows you to debug into code that you don’t have on your machine by querying a symbol server and a source server for the details. SymbolSource.org has added support for NHibernate, and you can download an unofficial build of the current
 
Ayende Rahien
Mar 13 2010 02:58 PM
vote up
0
vote down

Sometimes you really need a profiler handy

As part of the performance work I am doing for Uber Prof, I fixed a couple of issues related to profiling very busy applications. Here is the result on processing a 4GB input file. I can’t say that the profiler is happy about it, but it works.
 
Ayende Rahien
Mar 11 2010 04:23 PM
vote up
1
vote down

Using Lucene – External Indexes

Lucene is a document indexing engine, that is its sole goal, and it does so beautifully. The interesting bit about using Lucene is that it probably wouldn’t be your main data store, but it is likely to be an important piece of your architecture. The
 
Ayende Rahien
tags: design
Mar 10 2010 04:40 PM
vote up
0
vote down

Cut the abstractions by putting test hooks

I have been hearing about testable code for a long time now. It looks somewhat like this, although I had to cut on the number of interfaces along the way. We go through a lot of contortions to be able to do something fairly simple, avoid hitting a data
 
Ayende Rahien
Mar 09 2010 02:58 PM
vote up
0
vote down

Lessons learned from building the NHibernate Profiler

Last week I gave a talk about the things I learned from building NH Prof. Skills Matter had recorded the session and made it available. Looking forward for your comments, but I should disclaimer that this was after a full day of teaching and on 50 min of
 
Ayende Rahien
tags: nh prof
Mar 08 2010 03:02 PM
vote up
0
vote down

Slaying relational hydras (or dating them)

Sometimes client confidentiality can be really annoying, because the problem sets & suggested solutions that come up are really interesting. That said, since I am interesting in having future clients, it is pretty much a must have. As such, the
 
Ayende Rahien
Mar 08 2010 01:16 PM
vote up
1
vote down

Getting code ready for production

I am currently doing the production-ready pass through the Rhino DivanDB code base, and I thought that this change was interesting enough to post about: public void Execute() { while(context.DoWork) { bool foundWork = false;
 
Ayende Rahien
Mar 06 2010 03:24 PM
vote up
0
vote down

Sometimes I have code blinders on

This is a piece of code that I am using in RDB, at some point, it threw a null reference exception: I am ashamed to admit that I started doing some really deep debugging to understand the bug (this happen only under very strange circumstances). When I
 
Ayende Rahien
Mar 05 2010 04:07 PM
vote up
0
vote down

Actual scenario testing with Raven

Yesterday I posted about doing scenario testing with Raven, and I showed the concept of what i am doing. This time, I wanted to show what I am actually talking about, and how this is implemented. Here are the current scenarios for Raven. Each scenario is
 
Ayende Rahien
tags: raven
Mar 05 2010 05:34 AM
vote up
0
vote down

Scenario based testing in Rhino DivanDB

Here is a unit test testing Rhino DivanDB: Here is a test that tests the same thing, using scenario based approach: What are those strange files? Well, let us take a pick at the first one: 0_PutDoc.request 0_PutDoc.response PUT /docs HTTP/1.1
 
Ayende Rahien
Mar 04 2010 02:59 PM
vote up
0
vote down

Challenge: Robust enumeration over external code

Here is an interesting little problem: public class Program { private static void Main() { foreach (int i in RobustEnumerating(Enumerable.Range(0, 10), FaultyFunc)) { Console.WriteLine(i); } } public static IEnumerable<T>
 
Ayende Rahien
tags: c#
Mar 04 2010 06:35 AM
vote up
0
vote down

Git is teh SUCK

Today, I had two separate incidents in which my git repository was corrupted! To the point that nothing, git fsck or git reflog or git just-work-or-i-WILL-shoot-you didn’t work. The first time, there was no harm done, I just cloned my repository again,
 
Ayende Rahien
tags: git
Mar 03 2010 11:35 AM
vote up
0
vote down

Where do git repositories go when they die?

My RDB repository started giving me this error; fatal: Not a git repository (or any of the parent directories): .git I don’t think that I did anything to it, but it is still dead. Any ideas how to recover this?
 
Ayende Rahien
tags: bugs
Mar 02 2010 06:50 PM
vote up
0
vote down

Rhino DivanDB – A full coding sample – Embedded

Rhino Divan DB is going to come in at least two forms, embedded, and remote. The following is a full example of starting DivanDB, defining a view, adding some documents and then querying the database. Note that here we want to ensure that we get the most
 
Ayende Rahien
Mar 02 2010 02:41 PM
vote up
0
vote down

Rhino Divan DB – Design

One of the things that I wanted to do with RDB is to create an explicit actor model inside the codebase. I have been using a similar structure inside NH Prof, and it has been quite successful. The design goals for RDB is: Assumptions for the database
 
Ayende Rahien
Mar 01 2010 03:48 PM
vote up
0
vote down

User Interface Delegation – Rhino Divan DB

No, this isn’t a post about how to do UI delegation in software. This is me, looking at HTML code and realizing that I have a deep and troubling disadvantage, while I know how to build UI, I am just not very good at it. For a certain value of done, Rhino
 
Ayende Rahien
Feb 28 2010 02:41 AM
vote up
0
vote down

NHibernate donation campaign

NHibernate is the most popular Open Source Object Relational Mapper in the .NET framework. As an Open Source project, all the work done on it is done for free. We would like to be able to dedicate more time to NHibernate, but even as a labor of love, the
 
Ayende Rahien
Feb 27 2010 04:20 PM
vote up
0
vote down

Pricing software

It seems that people make some rather interesting assumptions regarding software pricing. When talking about commercial products, there is a wide variety of strategies that you might want to push, depending on what exactly you are trying to achieve. You
 
Ayende Rahien
Feb 27 2010 03:04 PM
vote up
0
vote down

Profiler new feature: Too many joins detection

This is Josh’s feature, since we wrote most of the code for it together. Basically, it recognize a very common performance problem, queries that uses too many joins, such as this one: Which would result in the following warning: Queries with too many
 
Ayende Rahien
Feb 24 2010 02:52 PM
vote up
0
vote down

Profiler Subscription?

One repeated request for the profiler is to have a personal version (which a price to match). I am not really happy with the idea, for several reasons. One of the major ones is that I have enough variability in the product already, and adding a new
 
Ayende Rahien
tags: uberprof
Feb 24 2010 06:30 AM
vote up
0
vote down

Profiler Speculative Feature: Query plans

This isn’t a new feature, because you can’t use it right now, but it is a really nice feature that we are working on, and I couldn’t resist showing it off hot “off the press”, so to speak. Given the following query: SELECT this_.id AS id7_1_, this_.title
 
Ayende Rahien
Feb 23 2010 01:10 PM
vote up
0
vote down

Nice process, but what about the engineering bits?

Software processes has always been a popular topic of discussion in our industry. Those can get quite heated, with advocates of the “stable / stale” Waterfall method pointing fingers toward “rapid / rabid” Agile methods, with the CMMI people throwing
 
Ayende Rahien
Feb 20 2010 06:20 AM
vote up
0
vote down

Challenge: Premature optimization, and all of that&hellip;

Let us look at the following pieces of code: public void Consume(MyBooksRequest message) { var user = session.Get&lt;User&gt;(message.UserId); bus.Reply(new MyBooksResponse { UserId = message.UserId, Timestamp = DateTime.Now, Books =
 
Ayende Rahien
Feb 16 2010 02:44 PM
vote up
0
vote down

Challenges: Where is the optimization?

Let us look at the following pieces of code: public void Consume(MyBooksRequest message) { var user = session.Get&lt;User&gt;(message.UserId); bus.Reply(new MyBooksResponse { UserId = message.UserId, Timestamp = DateTime.Now, Books =
 
Ayende Rahien
Feb 15 2010 03:19 PM
vote up
0
vote down

Resolution: Efficient Querying

Well, I already covered how you can handle this challenge several times in the past, so I’ll not do that again. What I actually did is quite different. Instead of having to deal with the complexity (which is possible) I decided to remove it entirely. The
 
Ayende Rahien
Feb 13 2010 03:02 PM
vote up
0
vote down

Suggestions for a new laptop?

Okay, the previous time I asked this question, I decided that buying a big desktop machine would be preferable, but I am currently traveling and I am pained at the speed of my current laptop. Therefore, I am going to need a new one. I am the happy owner
 
Ayende Rahien
Feb 13 2010 04:34 AM
vote up
0
vote down

Challenge: Efficient querying

This issue came out in my Alexandria sample app. I wanted to have a Queue of books for each user, and each book has a collection of its authors. The model looks something like this: And the physical data model: So far, so good, and relatively simple and
 
Ayende Rahien
Feb 12 2010 03:24 PM
vote up
0
vote down

Reminder: Linq to SQL Profiler goes 1.0 on the 14th

On the 14th of Febuary, Linq to SQL Profiler will complete its beta period. The 30% beta discount will be discontinued at that time, so if you think it is useful, you have better hurry up and show that you love it.
 
Ayende Rahien
tags: l2sprof
Feb 11 2010 03:15 AM
vote up
0
vote down

Challenge: Find the resource leak

I am not sure if I should be embarrassed or furious about this bug, but I spent a lot of time working on issue. Basically, I had a resource leak in my app. I knew that I had it, and even though it took a while to create a reliable reproduction, I managed
 
Ayende Rahien
Feb 10 2010 02:30 PM
vote up
0
vote down

Say hello to Uber Prof

I got several requests for this, so I am making Uber Prof itself available for purchasing. What is Uber Prof? It is a short hand way of saying: All the OR/M profilers that we make. An Uber Prof license gives you the ability to use: NHibernate Profiler
 
Ayende Rahien
Feb 08 2010 02:52 PM
vote up
0
vote down

A marketing mistake: WCF Data Services &amp; WCF RIA Services

There are some things that I just don’t understand, and the decision to name two apparently different technologies working in the same area using those two names is one of them. The image on the right is from In Search Of Stupidity, an excellent and
 
Ayende Rahien
tags: bugs
Feb 07 2010 02:30 PM