Glæder mig

Jeg skal til konference i næste uge og jeg glæder mig: 3 dage med de ypperste i min branche. Jeg er endda blevet inviteret, så jeg har VIP-billet med det, som ville svare til backstace-adgang. Det er jeg selvfølgelig ekstra glad for, men det er nu ikke den primære årsag.

De fleste forstår intuitivt, at for at holde sig i form, skal man træne regelmæssigt. Sidder man stille og inaktiv, forfalder kroppen, for den spilder ikke energi på at vedligeholde noget som ikke bliver brugt. Snart bliver hverdagens største udfordring også det maximale man kan præstere.

Sådan er det også med hjernen…

Hvis ikke man træner sin hjerne, giver den nogle udfordringer ud over det sædvanlige, forfalder evnen til at overskue komplekse problemstillinger. Hvis man ikke tager på konferencer eller efteruddanner sig, sidder man reelt og bliver dummere.

Ses vi på GOTO?

On Ticket goto GOTO;

Whoop, whoop. I’m in luck. It seems I have found a sponsor for a ticket for GOTO;!

Now that I dare hoping to attend, I have started to study the details of the program. One of the tracks has a day called “Distributed Systems Renaissance”, and that caught my interest, because distributed systems is a part of my day job.

One talk in particular caught my interest: “The Smallest Distributed System”. In distributed systems, one of the challenges is being robust to systems falling out and comming back online. This could be due to errors like network problems or due to planned downtime. No matter what, the rest of the system should continue to run and when the missing part is back online, it should be able to catch up whith what have happend while being down. Think of cash machines, that can run whithout connection to the bank. It happily hands out money and when it reconnects to the bank, all of the transations are transmitted. This also implies, that the account balance might not reflect how much money you actually have left the account, as some transactions might still be only in the cash machine. But eventually all transactions will be transmitted, so eventually the balance will be correct. This is more or less what eventual consistency is about, and this talk promis to address these issues.

Where I work, we have a produktion system holding about 1.2 million customers. Most of it is build from the ground up, and for the newest and most central parts, we have used things like Clojure and Datomic – and it’s distributed. Though I have been interested in and been building distributed systems for years now, there a still loads of stuff I should and could learn. I’m really hoping this talk can give me some more insight.

But man – when a glance through the program. It’s like a candy store and I’m starving.

Date for GOTO Conference is getting closer

The date for GOTO is getting closer and it’s still not clear if I’m participating or not. I’m still waiting to se if someone will sponser me a ticket or not. If I am going, there are some speakers I will be looking forward to hear.

Dan North:
Dan NorthI have heard him speak on other occasions and I really enjoy listening to his talks. I find them inspirering and I always take something new home with me. Last time it was a Rubriks Cube and a ball pen – you know what I mean.

Dean Wampler:
Last year I was at the Strange Loop conference in St. Louis. When I’m at a conference I try to mingle. So my friend and I ended up eating breakfast with a bunch of guys we didn’t know, exchanging ideas and discussing programming languages. It was only later that day I found out, that one of them had been Dean. He’s such a cool guy, and will definitely try to attend his session.

Jeff Hawkins:
I have a degree in psychology. Nothing to discuss. I will attend.

Kevlin Henney:Kevlin Henney
Kevlin is also one I have heard speak before and he was very inspirering. Though it’s been more than a year since I attended his talk, some of the things he spoke about still pops up from time to time. Can’t wait to hear what he has to say this time.

Dave Thomas:Dave Thomas
Him I met at GOTO Copenhagen a few years ago. Me and a friend had found a quiet corner and apparently he needed a break from all the fuss as well, so he came and sat down with us. We had some good discussion about software design, especially some challanges with a distributed system that my friend and I was involved in at that moment. He is such a nice and interesting guy, so I’m looking forward to hear him talk.

Then of course Ola Bini, Jeff Sutherland and all the other particpants.

I really need this

Securing your privacy

Recently Pamela Jones wrote on, that she would stop blogging. This makes me really sad, since I have enjoyed reading the blog since it started. Her reason for stopping on the other hand, did not make me sad. It made me think. Should I takes steps to secure my privacy? The answer was yes, so I have been looking at But I was wondering what step other people have taken to secure their privacy.

So what have you done?

What services do you use and why?

There’s nothing like the smell of new computer

Today I received my new MacBook Pro. There’s nothing like the smell of new computer, but step number one is setting it up. First I need some extra tools ranging from tree to git. I use homebrew for this, since I find it easy to use – as easy as apt-get.

Homebrew has to be installed:

$ ruby -e "$(curl -fsSL"

Then install Command Line Tools for Xcode, as homebrew will need them. To do this, first install Xcode using the App Store. When installed, open the preference pane, choose the ‘Downloads’ pane and install the command line tools from here.

Now homebrew is ready for use:

$ brew install tree
==> Downloading
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/tree/1.6.0 MANDIR=/usr/local/Cellar/tree/1.6.0
🍺 /usr/local/Cellar/tree/1.6.0: 7 files, 116K, built in 2 seconds


Installing java and browser plugin

I’ve spend some time today trying to figure out how to enable the chromium browser to run the latest version of sun..erh, oracle java. Apparently chromium reads the .mozilla/plugins folder… This i how I got things to work

Installing java

Download a java 7 without an installer from Untar this in /usr/local

# cd /usr/local
# sudo tar xzf ~/Downloads/jre-7u13-linux-x64.tar.gz

And update alternatives:

# sudo update-alternatives --install /usr/bin/java "java" /usr/local/jre1.7.0_13/bin/java 1062
# update-alternatives --config java

Install the Firefox Plugin

# mkdir -vp ~/.mozilla/plugins

32-Bit version:

# ln -s /usr/local/jre1.7.0_13/lib/i386/ ~/.mozilla/plugins/

64-Bit version:

# n -s /usr/local/jre1.7.0_13/lib/amd64/ ~/.mozilla/plugins/

Installing cucumber and jruby

Yet another note for myself…

At work I run Linux Mint 12 on my workstation and needed to install cucumber on top of jruby. The reason for choosing jruby is another story.

At first I tried to do with the pre-build packages for Mint, but did not have any luck. Then Frank told me to use rvm (Ruby Version Manager), and that was a good advice. It took me less than 10 minutes to get up and running. This was what I did:

To install rvm (Ruby Version Manager):

# curl -L | bash -s stable --ruby

The installation adds this line to .bash_login:

# [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

On my system, bash only reads .bashrc on login – not .bash_login – so I had to choose one of the following solutions. Since my .bash_login originally was empty, thus only had the stuff that rvm added, and I since I’m a lazy bastard I did this.

# echo ~/.bash_login >> ~/.bashrc

Which is basically the same as:

# echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc

But I guess you just as well can include .bash_profile in .bash_rc like this

# echo 'source ~/.bash_login' >> ~/.bashrc

Now you can install jruby using rvm:

# rvm install jruby

Set jruby to be the active ruby

# rvm use jruby

Now Install cucumber using jruby’s gem

# gem install cucumber

And I was ready to go…

Upgrading Groovy

This post is mainly a note to my self. At work I use a Linux Mint distro, but the bundled version of groovy is 1.7.10 and I needed some stuff only present in 2.0.0, thus I had to upgrade. I’m not that into linux (or any other OS for that matter), so it took me a while to figure out how. Then my computer crashed and I had to do it over, but I had not made any notes during my previous attempt. Luckily Google was my friend and I was able to find out quite quickly. This will be my notes now:

First download groovy 2.0.0 from

Then, in a command prompt, execute the following

# cd /usr/lib/
# sudo unzip /
# sudo update-alternatives --install "/usr/bin/groovy" "groovy" "/usr/lib/groovy-2.0.0/bin/groovy" 1
# sudo update-alternatives --install "/usr/bin/groovyc" "groovyc" "/usr/lib/groovy-2.0.0/bin/groovyc" 1
# sudo update-alternatives --install "/usr/bin/groovyConsole" "groovyConsole" "/usr/lib/groovy-2.0.0/bin/groovyConsole" 1
# sudo update-alternatives --install "/usr/bin/groovysh" "groovysh" "/usr/lib/groovy-2.0.0/bin/groovysh" 1
# sudo update-alternatives --install "/usr/bin/java2groovy" "java2groovy" "/usr/lib/groovy-2.0.0/bin/java2groovy" 1
# sudo update-alternatives --config groovy

Test that everything went well

# groovy -v
Groovy Version: 2.0.0 JVM: 1.6.0_26 Vendor: Sun Microsystems Inc. OS: Linux

(use google for details about “sudo” and “update-alternatives”)