- Software Development Tools

I use Emacs, heavily customized, as my text editor.

When I'm not in Emacs, I'm usually in a bash prompt in (or ConEmu if I'm on Windows). I have flirted with using Emacs' built-in terminal emulators, but have not yet taken the time to adapt them to my style properly.

My preferred desktop is Mac OS X, with Slate for keyboard-driven window management, Karabiner to remap a handful of keys, and Seil to remap Caps Lock into something more useful.

Version control is a fundamental part of my programming workflow, whether solo or on a team, and my default choice is Git. I almost went with Mercurial when I first made the jump to DVCS, but decided that Git's popularity was more valuable than Mercurial's simpler interface.

I have learned enough programming languages to know that all languages are equal, but some are more equal than others. In descending order of preference (but not necessarily experience), I have spent quality time with:

When it makes sense (which it often does), I use relational databases for data modeling. I've used a few different SQL DBs:

They all have different strengths and weaknesses, but on the whole I prefer PostGres. MySQL gets a special shout-out for causing much suffering, and I recommend avoiding it.

Chrome is my preferred browser, both for regular use and development. It's primarily open-source, includes an excellent suite of development tools, and is easy to extend.