On Work

How I do what I do


I work on a MacBook Pro with Retina Display. The computer has 2.6 GHz Intel Core i7 with 16 GB of RAM. I use a second generation iPad while working to browse documentation, to log into remote servers, and to check email.


I write code in Emacs inside of iTerm2. My shell of choice is fish. I've been fiddling with Eshell, too.

I use AppleScript Editor to write AppleScripts.

I use Xcode to manage my iOS devices and to design iOS interfaces. RubyMotion takes the away the pain of dealing with Xcode to write iOS code.


I write Ruby, lots and lots of Ruby. My default Ruby is JRuby. I use MRI version 1.9.3, although I've dipped my toes into Ruby 2.0. I manage my Ruby versions with rbenv.

Although I write lots of Ruby, my preferred object-oriented langugage is Smalltalk. I write Smalltalk code in Pharo.

I love functional languages like Lisp. My brain fits the functional paradigm. My preferred Lisp is Clojure with Racket not too far behind.

For concurrent, distributed systems, I like Erlang or, better, Elixir. Your programs are going to break: deal with it.

Sometimes I have to write JavaScript. I prefer Amber Smalltalk and ClojureScript.

I use RubyMotion to write iOS applications and, with RubyMotion 2.0, Mac applications.


I use GitHub as my code repository. I use GitHub's post-receive hooks to kick off continuous integration jobs at CloudBees and TravisCI.

I deploy applications to Heroku, Engine Yard, and RedHat OpenShift using TorqueBox and Immutant.


I write notes in Org-mode in Emacs on my Mac and in Elements on my iPad. I save my notes to Dropbox.


I use Chrome as my main web browser.

I use TweetBot to read and manage my Twitter feeds.

I use Colloquy as my IRC client on the Mac and on my iPad.

NetNewsWire continues to serve as my news reader.

I use Alfred to launch scripts, search documentation, navigate the file system, and sundry other things.