Sometimes it's interesting to look at the tools someone else likes. Here's a snapshot of my current toolbox.


I use a Lenovo Thinkpad X220 laptop, running Debian wheezy. It has a 2.6 GHz CPU, 16 GiB RAM (twice the official maximum, thanks to ThinkWiki), and both a terabyte spinning drive and a 240 GB SSD.

I'll be upgrading the Debian version to jessie in the coming months, now that Debian has frozen jessie in preparation for the next release.

Having two storage devices in the laptop is very nice. I get the benefits both of SSD (very fast) and a spinning disk (cheap per gigabyte). I have the operating system, my home directory, and some virtual machines on the SSD, and a Debian mirror, music and other media files, and other virtual machines on the spinning disk.

I don't use an external keyboard or mouse. The X220 keyboard is very nice, for a laptop keyboard, and I've used it and the trackpoint mouse emulator so much over the past several years that they fade away. I don't need to look at, or think about, using the keyboard, and they don't limit or slow me down. It's also very convenient to not have to attach, detach, or carry extra input devices.

Sometimes I do use an external monitor, but it's not my usual mode. I'd like much more screen real estate, and someday I'll arrange that, but in recent years that's been excluded by other life choices.

I don't have a desktop machine at all at this time, which is dictated by the same life choices: we've moved to a different country several times in recent years, so having as little stuff as possible is important to me.

General environment

I use GNOME3 as my desktop environment, with Xmonad as the window manager. I like the GNOME desktop in general, but I have fallen for a tiling window manager. I chose Xmonad over the options, because my Yakking colleague Daniel likes it. Also, it's another reason for me to learn Haskell.

I use Emacs as my text editor, with a little vi for quick edits. This is not a fanatical choice: I've used a number of text editors over the years, including several I've written myself. Currently, I seem to like Emacs best, but I may change again some day.

My preferred login shell is bash. I don't do a whole lot of configuration of it, mostly about the prompt, which is in bold face so I can more easily spot prompts in tall windows.

For virtualisation, I use libvirt, virt-manager, and KVM. I sometimes generate the virtual machine disk images with vmdebootstrap. I use virtualisation a fair bit, which makes the 16 GiB of RAM on my laptop a nice thing to have.

I browse the web with Firefox. Chromium is nice, too, but I find the Mozilla Foundation's commitment to freedom and openness to be more credible than Google's.

I follow RSS/Atom feeds with Liferea. I IRC with irssi. I handle e-mail with a combination of mutt, offlineimap, and notmuch. Files get synchronised across machines with git-annex.

Backups are done with Obnam (of course; I wrote it).

My web sites are made with Ikiwiki, and hosted on Branchable.

Documents are mostly written in Markdown, and processed with Pandoc.


I write most of my code in Python 2. I haven't started the transition to Python 3, because I want my code to run on the current stable version of Debian, and Python 2 has been much better supported. Also, lack of free time. I use the tool for coverage measurement, and my own CoverageTestRunner as the unit test runner. (I've written a lot of my own tools; I won't mention all of them.)

I also use a bit of C, and the usual assortment of shell, awk, and other Unix command line scripting tools.

Version control is handled by git. My git server runs gitano.

Stuff I don't use

I don't use much office software.

I don't use Facebook or Twitter, though I am on LinkedIn for professional reasons. I keep in touch with my people mostly by means that do not result in profiling information sold to advertisers.

I don't use integrated development environments. I prefer a traditional text editor, and to do things on the command line: this lets me pick and choose between various tools and doesn't tie me to one specific megatool.