Raw Syntax

The stuff programs are made of

Living With Boxen


About 3 months ago I switched to a new 15" retina macbook pro. My previous OS X install was nearly 4 years old. I did not want to clone the data over because too much cruft had built up. I was left with the question of how to quickly and easily setup a laptop for programming work. I chose Boxen because it was new, and I wanted a repeatable process for machine setup.


By and large boxen delivers on its promises. I was able to setup a system for ruby / web development in about 20 minutes (most of that was spent waiting). Simply

  • Download and install XCode and CLI tools
  • Setup and run boxen.

You get a system with rbenv and ruby installed and a bunch of other useful programs.


However, Boxen isn't perfect. It will require some customization sooner or later as you begin to use it for more tasks. This isn't a bad thing, but it requires you to get used to describing your machine configuration with code (Puppet).

Default packages are for github

The above section in the Puppetfile will install https://github.com/boxen/puppet-nginx . However this includes custom sites for the folks who work at github, which is not what I wanted. I elected to install nginx the old way brew install nginx, which gives me a vanilla nginx install.

Homebrew location

Boxen has its own homebrew installation at /opt/boxen/homebrew/bin/brew. This can be problematic for other tools that look for stuff installed into /usr/local.


Boxen keeps everything under /opt/boxen, which can cause problems with other tools. For example, Rails 2.3 looks for mysql sockets at /tmp/mysql.sock by default, whereas boxen creates the socket at /opt/boxen/data/mysql/socket. These problems are easy to remedy (specify the socket path), but are stumbling blocks none the less. Boxen's mysql also runs on an alternate port: 13306 not 3306.

Thinking in Boxen

Boxen requires a change in user behavior. Now, when you make a change to your machine's configuration it should be done within boxen. It should be done in an idempotent way. The benefit here is that your customizations end up codified and versioned. So if you had to you could install your boxen on another machine and be ready to work in about 20 minutes.

Peace of Mind

Compute peacefully knowing your setup is versioned and repeatable. I now have scripts for setting up nearly every aspect of my machine. Furthermore, these steps now run faster than doing it manually.