LocomotiveCMS requires a fair ammount of preparation and this guide will help you install all prerequisites on OSX.

I presume you at least got Ruby, Rails and Rubygems running on your system.

If not, install RVM, Ruby and Rails before you continue.

Install git

Best way to install git on OSX is by downloading and installing Xcode.

  • Install Xcode for free from the Mac App Store
  • After installing Xcode, the Command Line Tools must be installed. This is done from the Downloads section of Xcode's preferences.

If you don't want to install Xcode, Github has a great guide to install git using the command line. Alternatively you can also download the Github client.

Install Homebrew

Homebrew is a nifty package manager for OSX. If you know Linux, Brew will look familiar.

Installing Brew is pretty easy. Open Terminal and run ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

Install X11

Get X11 by installing XQuartz. More information at Apple

Install Imagemagick

Open the Terminal app and run brew install imagemagick

If you get any errors you can run brew doctor to locate and fix any problems.

I personally got a lot of errors while installing Imagemagick.

The following error during 2 installations.

However, brew doctor is your friend. Following it's advice I was able to easily fix all problems.

Install mongodb

Open the Terminal and run brew install mongodb

You can test mongo by running it directly from the Terminal: mongod --config /usr/local/etc/mongod.conf

Install LocomotiveCMS

New rails app

rails new myapp --skip-active-record --skip-test-unit --skip-javascript --skip-bundle

Update the Gemfile

gem 'locomotive_cms', '~> 2.0.0.rc12', :require => 'locomotive/engine'
gem 'unicorn', :group => 'development'
gem 'compass-rails',  '~> 1.0.2', :group => 'assets'
gem 'sass-rails',     '~> 3.2.4', :group => 'assets'
gem 'coffee-rails',   '~> 3.2.2', :group => 'assets'
gem 'uglifier',       '~> 1.2.4', :group => 'assets'

And of course you need to run bundle install.


Optionally you can tweak configuration settings. Checkout LocomotiveCMS official getting started page.


If all went well you can now execute bundle exec unicorn_rails and open the browser to view a shinny new LocomotiveCMS install.

— Written on the 28th of November 2012, filed under Articles.

Ross Miller of The Verge had a hands-on experience with one of the new Samsung slates running the final version of Windows 8 RT.

Obviously you can see that it's not entirely optimized for a touch experience and a lot of what you can see in the desktop mode is better catered, better suited for a mouse and keyboard. But it is there!


The touch menus are.. really not suitable for touch.

But it is there!!

— Written on the 1st of September 2012, filed under Articles.

Steve Ballmer said it himself: Microsofts riskiest product bet is the next version of Windows.

I seriously doubt Windows 8 is going to pull it off and here is why.

A better experience

Metro, the UI paradigm from Windows Phone 7, is smart, recognizable and different. It's clearly designed with multitouch in mind, provides a consistent user experience and moves away from Windows classic desktop analogy.

Something we had not seen from Microsoft before.

Metro follows the trend Apple started in simplifying the use of computers by reducing legacy UI concepts like the desktop, file system, software- and window management.

With Windows 8 Microsoft decided to make Metro the default interface while including a classic Windows desktop in order to prevent breaking compatibility with a zillion existing legacy apps. Daring choice.

Microsoft actually calls this classic desktop interface: desktop and it's treated as a Metro app.

Seems like a smart thing to do… right?

Wrong. Very wrong. Failure.

It's not a Metro app

The plan sounds great:

Introduce a completely new OS, place all legacy functionality into a single Metro app. By doing this, current apps can still be used. In time more and more legacy apps will have Metro interfaces so in a couple of years we can toss the desktop app away…

The thing is, as it stands today, the desktop app doesn't behave like a Metro app.

The desktop app actually contains apps on it’s own and is started when a user clicks inside Metro on a tile of a legacy application…

In practice this sends a user from one UI straight into another one. Most likely the UI paradigm the user knows, and recognizes, as (the current) Windows.

Two of the pillars of user interface design are consistency and clear intent. Windows 8 neglects these rules, intentionally, by introducing two completely different UI paradigms that combine into one inconsistent and unclear experience.

Combining two completely different user interfaces introduces a huge amount of complexity and is a bag of hurt for the average user.

Let alone, an advanced Windows user might feel constrained since he's forced into a new, more limited, interface while the old one he knows, and has used for years, is still there.

The following videos 1, 2, 3 demonstrate part of the problem: confusion.

Everything goes fine until a user is send back and forth between two user interface concepts.

The desktop is a Metro app concept fails horribly.

Functionality divided

Beside two User Interfaces paradigms, apps on Windows 8 also add complexity by splitting and duplicating functionality. Some functionality is only provided in Metro, or vice versa in the classic desktop interface.

For example the Metro Mail client doesn't support POP3 or the ability to mark e-mail messages as flagged. The classic desktop Windows Live mail client does support POP3 and stuff like flagging.

Now imagine someone like your mother configuring her POP3 mail account… Or even something 'easy' as browsing the web. Windows 8 has two separate web browsers.

Users need clarity, not division. Stuff like that could be perceived as choice, but usually it only results in doubt.

Even long time Windows users will have a hard time finding out how to get things done and be productive.

On one hand they have a complete new UI with it's own set of mandatory multi-gestures you need to learn, on the other hand there is the old, now limited, interface.

The RT problem

Another factor to add into the complexity mixer: versions.

On the good side Windows 8 breaks away of the complex version strategy introduced with Vista. For consumers Windows 8, more or less, only has 2 versions: Windows 8 and Windows 8 RT.

RT has Metro and a dumbed down version of the Windows Desktop. This all has some technical reason that only allows Windows 8 to run legacy apps.

In general this makes it a lot easier for people to understand what Windows version to buy, but it also has a downside.

Having two, technically, different versions will surely lead to incompatibility issues.

Imagine a situation someone orders a Windows tablet online to find out some apps aren't working since it has a different Windows 8 version. Again: not meeting user expectations is a killer for the overall user experience.

It's all in the name

The above concerns might seem neglectible, but they have a major impact on the overall user experience. Remember Vista? Windows 7 wasn't that much different, but details make users perceive it as a superior functioning OS.

User experience is about expectations. Why call Windows 8, Windows? Metro is completely different from what Windows used to be.

The average Joe buying a laptop will expect Windows 8 to be Windows. But what does he get? A new Metro interface looking gorgeous at first… containing… the old Windows as he knows it!?

  • Where is my start button?
  • How do I get back?
  • How do I turn it off?

Can you imagine Apple putting iOS on a Mac? The same questions would arise.


Microsoft has chosen a path of no concessions and choice. In my profession, concessions are the only way forward, that's why I think Microsoft is making a serious step backwards.

Perhaps Daring Fireball's John Gruber describes it best.

With the iPad, Apple has eliminated large amounts of complexity. With Windows 8, it remains to be seen whether Microsoft has eliminated complexity, or merely hidden it behind a Metro veneer.

I think it's even worse then Gruber speculates.

By introducing Metro Microsoft will multiply the complexity of it's OS.

With it's aggressive pricing scheme Microsoft wants the Windows world too move to Windows 8. I’m not certain if the Windows world wants to shift to Windows 8.

Right now I actually see more problems with windows 8 then it's predecessors and I'm not the only one.

Need for a change

Yes, Microsoft needs to look forward and needs to act sooner rather then later.

If I was in charge of Microsoft?

Introduce Metro as a separate OS. Give it separate brand from Windows and only put it on phones and tablets.

Metro could be a great iOS and Android competitor, but it shouldn't be forced upon existing Windows customers. They'll demand a downgrade if you do so.

Next, create Metro versions of Office apps and slowly start putting back Metro functionality into classic Windows. Or even develop a Metro variant specific for netbooks and laptops.

This is more or less what Apple is doing.

Follow Apples example like you've done before, look where it brought you today…

— Written on the 19th of July 2012, filed under Articles.

A list of top notch Git client applications for OSX.

I'm a big fan of Github and Git in general. I'm not afraid to use a command prompt for Git, but I'm also a bit lazy and like the convenience a GUI provides.

That's why I used to run Github for Mac to view changes, read commits and sync my local repositories with Github.

Github for Mac looks great, but last night I lost my faith.

Somehow the application decided to create a branch without me explicitly doing so. Furthermore it actually managed to screw up my entire code base by "auto" commiting changes using a message: GitHub for Mac: Throw-away commit.

Next thing I did was revert everything using the command line and dropping the Github app inside my trash bin!

Now I'm on the lookout for a new Git app for the Mac so I decided to create this list.


I've beta tested Tower almost a year ago and was impressed. The app looks great, it's stable and has pretty much everything you'd expect from a professional Git client including a built in diff tool. I do think the price is a bit steep at $36,75 (and that's with a 25% discount). It's also not available in the Mac AppStore (I do believe this is a downside).


Sprout is a Git client available on the AppStore. It's currently priced at $19.99 making it a lot cheaper then Tower. It's also a lot more limited in functionality though. Sprout looks(feature wise) a lot more like the Github for Mac app, except it isn't that tied with Github. A trial is available on the developers website.


SourceTree is a free Mac app available on the Mac AppStore. It's almost as feature rich as Tower and supports both Git and Mercurial. The app isn't by far as slick as it's paid alternatives, and be honest, it feels a bit bloated. Perhaps bloated is a bit overstated, but the UI isn't intuitive or self explanatory.


Gitbix is also priced at $19.99 and available on the Mac AppStore. It's also a great looking app and offers a feature set comparable to Sprout. It probably has the most minimal UI of all apps, and some really well thought-out shortcuts and features. For example, Gitbox keeps track of any submodules you add and makes it a breeze to update them. A trial is also available on the developers website.


Mac OSX has a ton of great Git client apps. There is no easy choice.

All the apps above are build around their own workflow and mindset. I didn't get a chance yet to check out all the Git clients out there. For example: Gitti also looks very promising.

For the mean time I've decided to go with SourceTree and will probably purchase Tower or Gitbox in the long run.

If you are in need of a Git client all I can recommend is to download trials/ demos of all apps and find out what app fits your own workflow best.

Update: I'm running the Gitbox trial as we speak and I must say this app impressed me with it's stability and ease of use. Besides it makes working with submodules a lot easier. Ditching SourceTree...

— Written on the 29th of February 2012, filed under Articles.

John Gruber:

What’s satisfying about Apple’s current success is that it’s proof that you can succeed wildly by focusing first and foremost on making great products. That design does matter.

Thats exactly how I wanna make my own products.

— Written on the 25th of January 2012, filed under Memo's.

Yesterday I found out another bug involving my "favorite" browser...

Internet Explorer 8, perhaps also 7, behaves a lot differently when doing a for in loop on a array compared to the modern browsers.

Basically the thing I wanted to do was dynamiclly fill an array with elements using a predefined order.

The resulting array would look a lot like this:

var names = [];
names[0] = "0. John";
names[1] = "1. Mary";
names[3] = "3. Jack";
names[4] = "4. Jane";

The thing is I couldn't control the order in which elements would be added to the array.

So the order in which elements would be added could easily look a lot like this:

var names = [];
names[3] = "3. Jack";
names[1] = "1. Mary";
names[4] = "4. Jack";
names[0] = "0. John";

Now here is the thing. Since you have blank keys in the array you can't use a regular for loop.

In the example above names[2] isn't defined which prevents you from creating a basic:

for(var i=0;i<names.length;i++){}

The easiest way to iterate through such a incomplete array is by using a for in loop like so:

for (var key in names) {

    var name = names[key];

    if (typeof(name) === "function") continue;

    document.write(name + '\r\n');

This however produces unexpected resuls in IE8.

In Chrome, Safari, Firefox and IE9 it would output:

0. John
1. Mary
3. Jack
4. Jane

In IE8 this produces:

3. Jack
1. Mary
4. Jane
0. John

As you might notice IE iterates through the elements of the array by the order in which they were added.

How to fix this unexpected behavior?

The simplest solution is to simply copy the array before iterating like so:

// IE fix
names = names.slice();

for (var key in names) {

    var name = names[key];

    if (typeof(name) === "function") continue;

    document.write(name + '\r\n');

This will reorder all array elements accordingly.

I've created a small snippet to see the bug and fix in action on jsfiddle.

— Written on the 24th of January 2012, filed under Articles.

There are a lot of tools out there that will help any webdesigner or developer.

I use the following online tools on a regular basis.


Too me this one is a life saver. It helps you calculate font-sizes for baselining text.

CSS3 generator

Generate CSS3 code for border radius, box shadow, text shadow and more!

Ultimate CSS Gradient Generator

Specific tool that generates CSS3 gradient code.

The W3C Markup Validation Service

You know you want to abide to web standards? The best online tool that works anywhere.

The 1KB CSS Grid

If I can't use Compass I prefer this tool to generate a CSS grid.

Lorem Ipsum

Placeholder text


Placeholder images

Copy paste character

Not really a web app, but very useful. Copy and paste special characters.


Simulate JSON REST calls


Online web app to create favicons. By far the best I've stumbled upon.

— Written on the 10th of January 2012, filed under Links.

If you use grids in your design, you'll love this one: gridlover

It's a simple tool that helps you calculate baseline sizes. Beats doing the math manually.

— Written on the 22nd of December 2011, filed under Links.

Yup, I did a site redesign. Seized the moment to upgrade the old site to Rails 3.1 and place it on the Heroku platform.

  • Minimalistic design
  • Rails 3.1 at Heroku
  • Better caching (speed!)
  • Using markdown now instead of BB code
  • It's responsive now for modern mobile browsers

The site is a lot more dimmed down from the previous version. Did take a chance by coloring links black in stead of darkish red.

Bit more form over function.

Ooh, and I didn't test my site for Internet Explorer. I've decided only to support the current browser versions

Yes.. I know I' m ignorant. Screw you too.

— Written on the 14th of December 2011, filed under Memo's.

Today I've tried to update iPhoto 9 to 9.2 in order to get iCloud support. Mac OS's build in "Software update" didn't show me any updates so I checked online if anyone else was experiencing the same problem.

I found some interesting articles here and here describing the same problem I had.

Unfortunately no suggested answers fixed my problem. I even manually downloaded the update from Apple's website to no avail.

The manual update gave me an error that my iPhoto version was too old!?

Before doing a complete reinstall of iLife I figured out a possible reason the update wasn't showing up. I had previously copied my iLife applications into a folder called "iLife '11" to tidy things up.

As a last resort I moved all the apps inside that folder back into the main applications folder. I then again ran Software update and to my suprise it showed me all the updates updates for my iLife suite!

I never knew moving applications to sub folders inside the applications folder was such a 'bad' idea..

— Written on the 17th of October 2011, filed under Recipes.