Wednesday, December 30, 2009

Retrospective of 2009, Planning for 2010

After the Kaizenconf of 2008, I wrote down a couple of things I wanted to learn throughout 2009. Looking back at that list for the past year, I think I did fairly well.

Retrospective of 2009

  • I learned more about integration patterns and ESB’s. I also learned about NServiceBus and I’m going to take this a few steps further in 2010. I’m hoping to get some real-world experience with a true Service-Oriented Architecture.
  • StructureMap is now my IoC container of choice.
  • I definitely learned a lot about NHibernate this year and I’m still a huge fan. I’m also looking forward to see what NHibernate 3.0 will bring to the table in 2010.
  • Thanks to the European VAN presentations of Greg Young on DDD and Mark Nijhof’s CQRS sample application, I learned a tremendous deal about Domain-Driven Design. I finally understand some of the stuff that Greg Young and Udi Dahan are talking about for a couple of years now. 
  • I (re)learned HTML/XHTML and picked up some basic knowledge about CSS during the last couple of weeks. My goal is not to become a CSS jedi, but I just want to have enough knowledge and experience in order to prevent the most obvious rookie mistakes.
  • I took my first baby-steps in Ruby earlier this year, but I definitely need more study and practical use in order to become a more proficient user.

There’s some stuff on the list that I didn’t managed to learn about:

  • JavaScript and jQuery
  • Lean/Kanban
  • F#

On the the other hand, I was able to learn about CouchDB and the NoSQL movement. I also learned a significant deal about RESTful architectures.

I also gained a lot of experience with WCF (Windows Communication Foundation) throughout the year, but I regret to say that it was mostly negative than positive. I don’t think that I’m going to consider this technology again in its current state. Maybe I’ll reconsider it again after it further matures.

Planning for 2010

Hereby the stuff I want to learn more about in 2010:

  • Continue exploring NServiceBus and using it in a real-world project.
  • Web development is something that I want to become more familiar with. JavaScript and jQuery are still high on the list, but I also want to take an in-depth look at some of the web development frameworks out there. I’m looking forward to learning about ASP.NET MVC, Fubu MVC, Django, OpenRasta and Ruby on Rails.
  • Following my new motto of learning one NoSQL database each year, this year I’m going to take a closer look at MongoDB.
  • Following the same credo applied on programming languages,  I’m currently very interested in learning Clojure, and not only because it can also target the CLR. As already mentioned, I also want to become more proficient at Ruby.


On the community side, I’ll continue to co-organize the European VAN meetings with Colin Jack. We’ll try to do them on a more regular basis. I also hope to put out more blog posts in 2010 than I did in 2009. In 2007 and 2008 I managed to write ~100 blog posts a year. This past year, I didn’t even manage to publish half of that and I’m not very pleased with that. While I was evaluating the past year, I’ve come to some conclusions about what might be causing this. Maybe I’ll get back to this in a later blog post.

Well, there you have it. I would love to hear about some of the things that you, my dear readers, are planning to learn in 2010. I wish you all a happy and successful new year.

Saturday, December 19, 2009

Taking a Visit To The SUSE Studio

After listening to the keynote of Monospace 2009, I got somewhat intrigued by the possibilities of SUSE Studio. Miguel de Icaza talked about this in his presentation and because its not that easy to follow a demo through an mp3 recording, I wanted to try it on my own. SUSE Studio lets you create your own customized appliances. An appliance is a pre-configured  combination of an operating system (SUSE Linux in this case),  applications and their configuration.

After logging on, the first step is creating a new appliance. Here you can choose which type of operating system you want to install (desktop, server or minimal), what type of desktop (GNOME or KDE) and the particular processor architecture you want to target (32-bit or 64-bit).


You can also give your appliance a name.


After you created your new appliance, its possible to select the packages that you want installed.  


Of course, you don’t have to choose everything yourself. Some packages are selected by default. Having MonoDevelop pre-installed is quite easy. Just search and add it to the selected software. You can even upload your own package and have it pre-installed for your appliance.


After you made up your mind on which particular applications should be included with your appliance, you can choose to do some configuration. For example, one of the most important choices you have to make is the background of your appliance ;-).


Other settings like the language, keyboard layout, time zone, users + password, etc. … can all be pre-configured. When you’re done configuring, you can choose to create the appliance. There are a couple of delivery options you can choose from:


When SUSE Studio is done building the appliance you composed, you can either download it or take a test drive. Now, this is the probably the coolest feature of SUSE Studio. With test drive you can boot and test your appliance in a browser without downloading it!




I don’t know about you, but I would love to have something similar for configuring Windows appliances. I mean, wouldn’t it be cool to have the Windows OS pre-installed with Visual Studio, Resharper, TestDriven.NET, etc. …?

The only thing that I feel is missing in SUSE Studio are a couple of packages that are not yet available, like CouchDB for example. I also kind of expected that the latest version of MonoDevelop and Mono would be available already, but at the time of this writing only the previous versions can be pre-installed.

Now try it for yourself, it’s free :-). The only thing you have to do is apply for an invitation and you’re ready to take if for a test drive.