erik doernenburg


About me

More info: contact, biography.

What am I up to at the moment?

I have worked in the field of enterprise applications for more than ten years now but I have not entered what some people affectionately call the post-technical stage; the stage where the newest IDE on your laptop was released several years ago and your ‘recent documents’ list is full of PowerPoint presentations and UML diagrams. I see this as as a good thing and, actually, made a conscious decision a few years ago that I wanted to remain near delivery rather than becoming an ivory-tower architect. Luckily, working for ThoughtWorks, who practice Agile development on all projects, this hasn’t stopped me from doing architectural and strategic work at the same time.

In the past years I have spend a lot of time with post-J2EE architectures in Java and have, on real world projects, replaced typical EJBs in standard J2EE containers with Plain Old Java Objects (POJOs) hosted by lightweight containers such as PicoContainer. This greatly improved testability and maintainability, two areas that are often overlooked in developments with a lot of upfront design. I have presented some of my findings at the JAOO conference and you can find the material on this site in the talks section.

Of course, using POJOs only works as long as you don’t need any of the enterprise features offered by J2EE such as declarative transactions but, then again, it is surprising how often these features are not required. In any case, using Aspect Oriented Programming (AOP) is a great approach to add enterprise services to POJOs and frameworks such as Spring provide implementations of this idea. Interestingly, the EJB 3 spec looks like an admission that J2EE development is too complex and a more lightweight model is needed. This article on The Server Side has a good intro.

Over on the other side, that is Microsoft’s .NET platform, I am spending time looking after the Neo Entity Objects framework. I am also looking at Microsoft’s LINQ project but most of the innovation seems to happen in the Java space and then be ported over, often with just an N in front of the name or a ‘.NET’ following it. Just look at Spring.NET, NHibernate, NAnt, NVelocity, Pico.NET etc. To a certain extend this is even true for IDEs if you consider ReSharper.

After about 8 years of J2EE and 5 years of .NET most enterprises are now developing for these platforms and are venturing into writing loosely coupled components, as opposed to distributed applications. (This would be called SOA on Next Gen platforms in corporate lingo.) I’ve been involved in quite a few projects in this area and was often reminded of two things: How powerful message based architectures are and how new Web Services and their implementations are.

How did I get there?

The very first piece of software I created was a little game that I wrote in Basic on the Commodore VIC-20. That was in 1983. I got the first taste of real software development in 1987 on an Atari ST when I stopped hacking assembly code directly into memory (using a ‘monitor’ application) and began to work with an IDE, a C compiler and a debugger. This was also my first exposure to windowing systems. Have a look at a Screenshot of the Turbo C IDE on the Atari.

In 1990 I started Uni where we learned Scheme using the legendary Abelson/Sussman book. It was a bit ‘different’ at first but in retrospect I think it was a great way to understand fundamental concepts, especially object orientation. Of course, we also got accounts on Unix machines, the lunchbox Sun IPX for example, and we were connected to the Internet! Not that we could surf, the Web hadn’t been invented yet…

A year later I got a student job at a company that wrote software for the NeXT computers running NeXTSTEP and at that point I knew I didn’t want a beige lunchbox but a black pizza-box! It was UNIX, it was fast, had a great user interface and futuristic applications. (Check out this screenshot of a Color NeXT in 1994 and note the emulator window in the background running the then current Windows version.) However, the best of it all was the development environment: It was all object-oriented and late binding with a great UI toolkit, which in my opinion was so much better than most of what came later; and this decidedly includes Win32 and Swing. (As a side note: There is a connection between some NeXT enthusiasts and Swing but a lot got lost on the long way to Netscape’s IFC and later JFC.) Interestingly, the architecture of the NeXTSTEP UI kit has not really changed in more than 10 years and now forms the basis for all new Mac OS X applications. And note the similarity of the Mail application featured on the OS X page with the one on the NeXTSTEP screenshot above…

In 1995, while still writing my thesis, I joined another small IT consultancy that was also devoted to the NeXTSTEP environment. Happiness did not last all too long, though, as we had to abandon our two-tier applications with their beautiful and rich user interfaces and moved back into the future with request/response web-based 3-tier applications. Another piece of roadkill during this time, at least as far as my commercial career is concerned, was Objective-C, the programming language at the heart of the NeXTSTEP platform. We all moved to Java and, given the state of the platform and the tools at the time, were sorely disappointed. Then again, it was probably a bit ambitious at the time to have a Java Applet do RPC with some middleware. (We even had to write our own remoting implementation, called Tango.) On the positive side, the NeXT heritage provide us with an excellent application server, WebObjects.

Late in 1999 I gave up all resistance and fully joined the Internet Hype. And I guess, a few months of TCL development for the Vignette CMS give you a sense of appreciation for Java and J2EE. (In all fairness, Vignette have moved on since those days.) It was a great time and we delivered many beautiful B2C websites; even arts projects. In any case, we were in the new economy, the dot com bubble. Soon, I realised that this was not meant to last and I found myself having to decide between small web shops with cool but technically boring projects and IT departments of large corporations. A decision I could not make as I love technology and the drive and excitement of small companies…

After a break in 2002 a good friend of mine introduced me to the solution of my dilemma: A boutique consultancy that specialises in the ‘heavy stuff’, a company that runs a Geek Night.

This pretty much brings you to what I’m up to now.