Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

A Coder Interview With Oren Eini

0.00/5 (No votes)
1 May 2013 1  
Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Oren Eini, perhaps best known for his work on RavenDB.

Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Oren Eini, perhaps best known for his work on RavenDB.

Who are you?

My name in Oren Eini, I am also known under the nickname Ayende Rahien for reasons that are too long to detail here. I live in Hadera, Israel (about an hour north of Tel Aviv) and mostly work there as well, although I tend to travel quite a bit.

Mostly I work on our NoSQL document database: RavenDB. Job title varies from "Wizard" all the way to "Oh No! Him Again."

I also blog frequently at Ayende @ Rahien.

What do you do?

I have worked on quite a lot of Open Source projects: Rhino Mocks, NHibernate, Rhino Service Bus, etc.

In the past few years I have been busy making life better for data management. Specifically, we build a set of profilers to make working with OR/M easier. We have the NHibernate Profiler, Entity Framework Profiler, Linq to SQL Profiler and Hibernate Profiler for Java.

After really getting the problems of developers working on relational systems, I decided that I have had enough and set out to write a database that wouldn’t make me want to jump out of a high window at every opportunity. That is how RavenDB was born. It is a database that was written by developers for use in actual OTLP applications, and it make it a joy to develop applications because it gets out of your way.

Most days I start by going over the mailing lists for our products, answering support questions and then either doing bug fixes :-( or working on new features :-).

What is your development environment?

I am mostly developing using C#, with VS 2012. We are still working on .NET 4, but we just added the async targeting bridge to make things easier.

My current machine is a quad core 3.2 Ghz machine + 8 GB RAM with SSD drive. I don’t care much for the CPU, but the RAM and the SSD drives are crucial for good performance.

With regards to tooling, I can’t say enough good things about JetBrains, we use [ReSharper](http://www.jetbrains.com/resharper/, YouTrack and TeamCity for all our projects. They are effective tools that get out of your way.

What new tools, languages or frameworks interest you?

I like working with C# 5’s async, and I am probably going to do evil stuff there.

Node.js is getting a lot of noise, but when I looked at it previously, the major point was the event-driven nature. Now I want to look at that from an architectural point of view. More specifically, how the limits of JavaScript force a common architecture of single function per module.

What is your coding pet peeve?

Pet peeve? SELECT N+1 is right there at the top of the list, but error handling via catch() {} is what will get my blood boiling

I pretty much use the .NET standard guidelines, plus whatever R# tells me :-).

How did you get started programming?

I got into programming something in my early teens. I remember playing with the Logo’s turtle, then moved to VB4, then VB6 and finally C++.

At around 2001, I started hearing about this .NET Framework thing, and after wondering how stupid the marketing team at MS was, I decided to give it a try.

The following is my first C# program:

public class Program

{

   Form form;



   public static void Main()

   {

         new Program().form.Show();

   }

}

This failed with a null reference exception, and I just couldn’t figure out why. For my C++ eyes, the form variable should have been allocated using the default ctor.

It took me a while to grasp that this is actually a pointer. Once I got that, which took more time than I am willing to say, I wrote the exact same program in C++.

In C++, I got:

Invalid pointer access: 0x01230accd

After comparing this to the C# error, which told me about a null reference exception and in which line. I knew where I wanted to be.

How has the developer community influenced your coding?

I think that it had a lot of influence. I started out working on my own, so a lot of the things that I learned were from off the ’net. Even today, you can pretty much tell whatever I am doing because it is in my blog. A lot of my early projects were heavily influenced by that.

We use GitHub for all of our projects, and I can state that it has easily changed the way we are working with software.

The thing that I dislike the most about the dev culture is the tendency to grab into something - today it is probably CQRS/event source and few years ago it was DDD and before that TDD - and declare it to be THE thing you need to be a good developer. Usually without any need for additonal context.

What advice would you offer to an up-and-coming programmer?

Go and re-read the books about the basics. From how to implement a memory manager to networking protocol to case studies in project failures. Having good grounding is the most important aspect in being a developer not just for a year or two, but as a profession.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here