Archive for: 2010

Follow-up Of A Crazy Idea

After the many responses I got about a crazy idea I had a little while ago with some friends I felt I had to give you a small follow-up on that. Unfortunately this crazy idea won’t fly (phun intended of-course).

Power Comes In Different Forms

I think it is time we get a Noide movement, ahh darn it got my casing all mixed-up; I meant NoIDE of-course. I have been developing on the .Net platform since the first beta’s where released and have been using Visual Studio.Net since it got first released as well (my first .Net coding was actually done in EditPlus). And the one thing that has been a constant during these last 10 years…

Good-bye Toto, Hello Dorsey

This post is about something that I hope you didn’t even notice, but I just wrote my own blog engine (again, yes I know…). As you may have seen in an earlier post, but lately I have been using Toto as my blogging engine.

Smidig 2010

People that follow me on Twitter may have seen my tweets with the #smidig hashtag, so I thought to write a little bit about it so all my non-skandinavian followers also understand what this is all about.


If you have some experience in JavaScript development then you know how powerful it can be; for example JavaScript enables us to load additional content after the page has already been loaded by the browser. This can happen either by an user action or perhaps triggered by a timeout. When an user clicks on a link we can trigger some JavaScript that requests some additional JSON data from the server. Then when the data is returned to the client we can use an JavaScript templating engine to combine the JSON with HTML and place it in the appropriate HTML place holder.

A Crazy Idea

Some time ago after the NNUG yearly meeting I was talking to Sondre Bjellås and Lisbeth Skogland and one thing led to another and suddenly we were talking about arranging a conference.

In The Enterprise

I quite often see comments like; “We are only allowed to use Microsoft Technologies” and every-time I think “Why?”. What is the reason behind such a standpoint. What is won by limiting their choices in such a radical way?

The Web is all about Composition

With new technologies we also get new ways of solving problems, and of-course this very much applies to the web. In the good old days we had static web pages that contained all the information we wanted to display. Web browsers would do one request per page and several parallel or sequential requests for images and style sheets. But time has changed this.

Importing Comments into Disqus

I wrote before how I moved my blog to Heroku using Toto for the blogging engine and Disqus for providing the comments functionality. And I have to say so-far Disqus has been great, of-course I haven’t received that many comments yet that I would have encountered problems ;)

Gemsets, Bundler and Versioning

One of the things I like about Ruby versus .Net is how easy it is to work with different versions of a specific Gem, for example you wanted to upgrade a specific gem in a project from version 1.2.0 to 1.2.3, then all you needed to do is gem install the_gem -v=1.2.3. This command will just install the new version side by side with the previous version. Then in the project you only need to specify that you want to use the new version of the gem. If you don’t specify a version then the latest installed version will be used automatically (so you want to make sure you specify a version). For example in Rails you can specify the version by adding the line: config.gem ‘the_gem’, :version => ‘1.2.3’ in the environment.rb file, but there are also other ways.

The .rvmrc File

So after you have read my last post I am sure you have been looking into RVM and if you haven’t perhaps you should. And you have seen how much power and simplicity RVM can bring to your development workflow. Take for example my current situation, I have some projects in Ruby 1.8.7 and also in JRuby 1.4.0. Now switching between these is still a little bit of a pain, because I have to remember to tell RVM that I need a different Ruby version depending on the project I am working in.

My Terminal Prompt

I want to share something that I learned from Rolf Bjaanes not to long ago and that is that the Terminal command prompt can give me a lot of useful information. Below here is how my Terminal command prompt looks by default:

Blog moved, Once again...

Ok it happened again; I started blogging on Blogger, then created my own blogging engine using FubuMVC and moved to the Fohjin domain. Then I got asked to join Elegant Code which I was very flattered by and accepted right away. But now I feel that this is maybe not the right place for me to blog after all.

I'll be BEKK

Just a little note; I am very happy to announce that I’ll be joining BEKK from August on, I’ll be working mostly on .Net projects I am sure, but I have the intention to squeeze some Ruby projects in there as well. And perhaps this can become the majority soon as well?

Ruby Heroku

When I started looking into Ruby more seriously I wanted to have an actual hosting provider that would host the site that I am working on. A friend of mine recommended me to look into Heroku and I have to say that I am very happy that he did.

The Ubiquitous Language is not Ubiquitous

I attended an interesting Domain-Driven Design talk today given by Janniche Haugen talking about why you would want to use Domain-Driven Design in a project, and this presentation is what triggered this post.

CQRS Scalability

Scalability is one of the several different benefits you gain from applying CQRS and Event Sourcing to your application architecture. And that is what I wanted to take a closer look at in this post.

CQRS Event Versioning

When using Event Sourcing you store your events in an Event Store. This Event Store can only insert new events and read historical events, nothing more nothing less. So when you change your domain logic and also the events belonging to this behavior, then you cannot go back into the Event Store and do a one time convert of all the historical events belonging to the same behavior. The Event Store needs to stay intact, that is one of its powers.

CQRS Event Sourcing

So after reading this blog post by Rob Conery about Reporting In NoSQL where he explains very well what the problem is when using a RDBMS for persisting the state of your domain, or really anything that is written with Object Orientation in mind.

Slicing the day

I have noticed with myself (actually I know this for a very long time now already) that I am much more productive in the evenings then I am at the end of a working day. I also just finished reading Programming is all Design by Joakim Holman, Why Design Cannot be Billed by the Hour by Steve Zelle, Software on the Cheap by Uncle Bob Martin and The Design Dilemma by Kent Beck which made me want to put my thoughts into writing.

Being provoked by your uncle

So there was a lot of commotion about two blog posts by Uncle Bob Martin; Dependency Injection Inversion and Mocking Mocking and Testing Outcomes. With replies from people like Jimmy Bogard “Poor use of DI versus need for DI” and Ayende “Rejecting Dependency Injection Inversion”. And also on Twitter there were many discussions going back and forth about it.

Pair Programming Continued

In my previous post I talked about how I experience a really good pairing session, and in this post I like to discuss what I believe is needed for this to succeed.

Pair Programming Session

Today I had a really enjoyable pair programming session with my college Øyvind. It was quite some time ago since our last session, which was when we were both working at a customer together.

You are responsible

Many have said it before, and I’ll repeat it once more; as a developer you, yourself are the main responsible person for your own education. So not your employer, your mentors or anybody else. You are. This is one of the principles that is central to the software craftsmanship ideas.


You wake-up in the morning open the curtains and look outside, and there it is; everything you see is covered in a nice layer of fresh snow. Beautiful if I may say.

Test Driven Spikes (TDS)

I have had a discussion with a college of mine about spike code and how to bring the chosen solution into production code and quality. Jeremy wrote about it a while back stating to never check-in spiked code, and I was wondering if I could challenge that a little bit.