Our New Office

Back at the office and looking forward to the year of 2011. One exciting thing happening this year is that we're moving to a new office in Gothenburg.

We have been looking for something new for a year. Since Elabs started two years ago we’ve been renting space at Edithouse, which has been great. But we need more room and we want something of our own. Something that reflects the kind of company we are. An office out of the ordinary.

We need a spacious place with room for the developers to pair program undisturbed. A creative environment for our designers. Room for our customers when they come and work with us and for the developers in our Stockholm office when they are visiting Gothenburg. We also need a space to hang out and finally have a real ping pong table.

Now we've found it.

The building is called The Hasselblad House and was built by Victor Hasselblad's grandfather in 1875. Victor Hasselblad is famous for his camera inventions. Neil Armstrong and Buzz Aldrin used a camera from Hasselblad to shoot photos from their landing on the moon and Lennart Nilsson used Hasselblad's cameras to take his amazing photos inside the human body.

Hasselblad had their headquarters in this building for over 100 years. It was also used as a residence for the Hasselblad family. In 2003 Hasselblad moved to a new building. Now most of the house has been carefully renovated and converted into apartments. There are two office spaces in the ground floor, and one of them will be ours.

Right now we're working with our architects and designers, planning the renovations. We'll have more to share about that shortly. Then it's a long wait until June, when we move across the street to this building:

The Hasselblad House


The Year 2010 - A Summary

Today is the last day before the Christmas holiday. We’ll be back January the 3rd and share some exciting news with you, but for now; a quick retrospective of a fantastic year!

One of our favourite events of the year was the inaugural Nordic Ruby. We had a great time and it was fantastic to have so many people here. Hopefully we’ll se you all again at Nordic Ruby 2011.

Another big happening was the startup of our Stockholm office where Ingemar and Dennis are located. Hopefully they will get some company next year. Our team in Gothenburg grew as well, with the addition of Johannes and Nicklas at the beginning of 2010 and then Antony as well. This means we have doubled our team from 5 to 10!

In March we had a company trip to Scotland where we focused on our coming products. Serenity will be the first out, a simple scheduling app for project planning. It's currently being beta tested and we're aiming for a launch in the beginning of next year. We’ve also developed our first iPhone app, for one of Sweden biggest banks, SEB. Great fun, and we hope we’ll do more of that during 2011.

Merry Christmas and a Happy New Year!

Best wishes from

CJ, Lilly, Jonas, Jimmy, Johannes, Antony, Anders and Nicklas in Gothenburg

Ingemar and Dennis in Stockholm



Nordic Ruby 2011 — The Half & Half Conference

The planning for Nordic Ruby 2011 is in full progress. If you are interested in sponsoring, please take a look at the sponsorship prospectus on the site;

Last year was a great success with a hundred attendees from Sweden, other Nordic and European countries and the USA.

We will continue with the much appreciated concept of 30 minute talks and 30 minute breaks, a half and half conference. This gives you a great opportunity to meet and socialise with a lot of people in the community from all around the world. There will off course be great speakers as well!

We can already announce Chad Fowler as a speaker! Chad Fowler is program chair for RubyConf and RailsConf, and author of The Passionate Programmer. We are very glad to have him.

The conference will be held at the same great venue as last year. The dinner party will be held at a new place and we’ll have some other new details. More information in the future.

You can download the wrap from Nordic Ruby 2010 on the website and also look at the sponsorship prospectus. The full site for Nordic Ruby 2011 will be launched at the end of January.

June 16th - 18th, save the date for Nordic Ruby 2011 in Gothenburg, Sweden. (The conference days are on Friday and Saturday).

Please contact us at if you are interested in sponsoring the event.


Scopes Are Obsolete

I admit, I've never been a big fan of named_scope or just scope as it's been renamed in Rails 3. When it was first introduced I remember not being particularly impressed, as a Merb acolyte we'd had this chaining functionality in Datamapper for ages, only it was much better. In fact in Datamapper, every query you could construct was chainable. Thankfully in Rails 3 and ActiveRecord 3, queries have finally grown up so that everything is now chainable in ActiveRecord too:

class Person < ActiveRecord::Base
  def self.alphabetically
    order(:first_name, :last_name)

    where(:archived_at => nil)
end # => [...] # => [...]

In this case it seems like the scope method will give us much nicer more concise syntax:

class Person < ActiveRecord::Base
  scope :alphabetically, order(:first_name, :last_name)
  scope :active, where(:archived_at => nil)

But imagine if we want to add a new kind of scope to find user's with a given last name:

scope :by_last_name, lambda { |name| where(:last_name => name) }

It's getting a bit less nice, aside from the gratuitous lambda, it's still pretty okay though.

What I believe is wrong with this code though is that it is essentially recreating Ruby functionality. We're defining a method called by_last_name which will execute some code when called, only we're doing it through meta-programming for essentially no reason at all. The above could have been written as:

def self.by_last_name(name); where(:last_name => name); end

And it would have worked exactly the same. The only difference that I can tell is that scope allows you to define extension methods by passing a block, which I'm sure no one has ever used, since it's so completely useless.

The problem becomes even more striking when the code is even the slightest bit complicated.

scope :for_user, lambda { |user|
  if user.admin?
    where(:active => true)
    where(:active => true, :user_id =>

That's just horrible.

def self.for_user(user)
  if user.admin?
    where(:active => true)
    where(:active => true, :user_id =>

This looks much more like Ruby code and less like some kind of weird JavaScript concoction.

Stop replicating functionality that already exists, stop using scope. It is obsolete.


Our Presentations at RubyConf 2010

Two weeks ago, Jonas and I were in New Orleans for the 10th annual RubyConf. This was my 2nd RubyConf, but I had a very different experience this time. This time I was one of the speakers. And I was giving two presentations.

The Front End Testing Frontier

One of the presentations was an extended version of the Front End Testing Frontier presentation I gave at Mountain.rb in October. This time I was fortunate enough to have my colleague Jonas Nicklas as a co-presenter. Jonas is the author of the testing libraries Capybara and Evergreen, our primary tools for JavaScript testing at Elabs.

I've uploaded the slides from the Front End Testing Frontier presentation, but they're pretty sparse. Video should be available in a few weeks, and I'll update this post then.

Socialist Software Development

My other presentation was titled Socialist Software Development. I came up with the title after seeing a clip from The Daily Show about socialism in Sweden. I saw some similarities between the principles of socialism and agile development, and since it seems most Americans are terrified by the mere mention of socialism, I thought it would be fun to go to the US and talk about it. The essence of my talk came from this passage from the British Labour Party constitution:

The Labour Party is a democratic socialist party. It believes that, by the strength of our common endeavour we achieve more than we achieve alone, so as to create, for each of us, the means to realise our true potential, and, for all of us, a community in which power, wealth, and opportunity are in the hands of the many, not the few.

While I drew some inspiration from my flippant title, I mostly talked about how Sharing is Caring, and how important that is in software development.

Giving such a "soft" talk was quite a bit harder than giving a technical presentation, but I was very happy with how it went. I've posted the slides for the Socialist Software Development presentation as well, and I'll update when the video is online.

What's Next?

I've been to a lot of conferences this year, and it's been great presenting at Mountain.rb and RubyConf. The next conference on our schedule is the Scottish Ruby Conference in April next year. All the Elabs developers will be there, and I'm really looking forward to that. Then there's our own conference, Nordic Ruby, in June. This year was amazing, and it looks like the one next year will be even better.

I don't have any confirmed speaking events for next year, but I would love to do a couple and continue to improve as a speaker. But I think I'll limit it to one presentation per conference. Giving two at RubyConf was a bit overwhelming.