A Rubyist's development environment

Sep 2010

I consider myself as a Rubyist and a minimalist. I want my tools to be few, and sharp. That means I only want few tools, but I want to master these tools. Now it’s been about a year since I started programming, this post is supposed to give you a look into my toolbox. I hope it can be of inspiration to you.

I’ve open sourced all my dotfiles on Github.

Operating System: Linux and Mac

My primary development platform is my desktop running Arch Linux. It’s a dual screen setup, which I learned to love. I also own a Macbook, primarily used for schoolwork and field coding.

As for my desktop setup of noteworthy tools besides my editor, I use bleeding-edge Chromium as my browser. I might switch to Uzbl someday. I use Openbox as my window manager. Sakura as my terminal, simply because it’s lightweight, simple to setup and it does its job.

I have Openbox configured to act like Vim, and for Chromium I use Vimium to achieve the same Vim behavior. In theory I never have to touch my mouse.

Shell

As for my shell I just use bash. I know the cool kids use zsh, but I simply haven’t bothered to set it up, and I’m really quite happy with bash.

My bash configuration is pretty simple. It just defines some default values, source a few things, and add to my $PATH. It also sets my PS1 which consists of only the current directory. I figured that I already know my username, and hostname. Furthermore I really don’t need to know the entire absolute path of the current directory.

Editor: Vim

I’ve been through many editors. Many. Believe me. A little less than a year ago, a friend recommended me Vim. And I started digging into it. In the beginning, it was hard. But he promised me it’d be worth it. So I sticked to it. In the start, I felt less productive in Vim, because it was somewhat hard to learn. After a few days in it however, I began taking advantage of the endless sets of commands, this all resulted in a more productive me. I now love Vim, and nowadays I almost do all of my text-processing in it: I take notes in Vim, I’m writing this very blog post in Vim, and I make kickass code in Vim.

My Vim setup really is nothing special. I use a few plugins, and I have a small configuration file which is just parts stolen and compiled from others. I can’t remember who I stole what from, though. So they are not credited. I use Monaco as my Vim (and terminal) font, I simply like this font a lot. Screenshot.

Syncing: Dropbox

As I have multiple computers, I sync everything with Dropbox. This also has the benefit of being (additional, I have everything under git, too) backup. My Dropbox holds mostly configuration files and code. The rest is in the cloud. With everything in my Dropbox, I make symbolic links from the Dropbox.

Configuration between multiple computers

As I have multiple computers, I want my configuration files (dotfiles) to change on other computers as soon as I have changed it somewhere else. In the beginning I had an ugly Rake task to do all this symbolic linking, but later I discovered Homesick.

Homesick is sorta like rip, but for dotfiles. It uses git to clone a repository containing dotfiles, and saves them in ~/.homesick. It then allows you to symlink all the dotfiles into place with a single command.

When you clone a castle, as they are called in Homesick, it puts the castle in ~/.homesick/repos/<repo>, for instance:

$ homesick clone Sirupsen/dotfiles # goes to ~/homesick/repos/Sirupsen/dotfiles

Instead of updating the dotfiles with Git via pulling, however, I wanted it to go through Dropbox, so changes are reflected on my other computers instantly. Later, I can commit these changes:

$ ln -s Dropbox/dotfiles ~/.homesick/repos/

Now I can symlink everything easily:

$ homesick symlink dotfiles

Using dual screen for coding

When I work, I usually work on two monitors. A 19”, and a 24”.

On my 19” I have Pidgin running. This makes me able to talk to colleagues, or friends while working on my other monitor. I might also shring my windows here, and have another terminal open with tests.

On my 24” I have my browser running in the right side, taking up about 50% of horizontal space. When i am coding, this is great for documentation and general googling, githubing and ticket managing while coding. I have experimented with fullscreen Vim, however I just don’t need more than these 80 columns horizontally, so this setup works great. More vertical space is always nice, I’ve heard great things about having a screen that can be turned around to a portrait view for coding. I usually have my terminal running beneath my Vim window, it’s super easy to switch between them with my Openbox Vim configuration.

Subscribe through email to new articles (typically less than once a month).