Uses This

A collection of nerdy interviews asking people from all walks of life what they use to get the job done.

A picture of John MacFarlane

John MacFarlane

Philosophy professor, developer (pandoc, gitit)

Posted in developer, linux, mac, professor

Who are you, and what do you do?

I'm a philosophy professor at UC Berkeley. I'm also a hobbyist programmer with several open-source projects, most prominently pandoc, which converts between many different text markup formats, and gitit, a wiki that uses git, darcs, or mercurial as a file store and pandoc for markup conversion.

What hardware do you use?

At work I use a six-year old Thinkpad T60p, which I refreshed last year by maxing out the RAM and replacing the hard drive with a solid-state drive. For ergonomics I have the laptop opened almost 180 degrees and propped up on a 3M LX550 Vertical Notebook Riser, so I'm looking directly at its beautiful 1600x1200 15" matte screen. I don't like mice, so I use an external ThinkPad USB keyboard with TrackPoint.

At home (and on the road) I use a 13" MacBook Pro. I have a standing desk, an Ikea Utby bar table. To get the screen up to eye level, I put the MacBook on a laptop stand sitting on top of a couple of large books. I use an Apple wireless keyboard and a Magic Trackpad.

I also have a Linode VPS that I use for my website and a few web applications.

And what software?

I use Debian Squeeze with xmonad at work and OS X Lion at home. No matter which OS I'm using, I spend most of my time in a terminal, a web browser (usually Chrome), or a PDF viewer. I do all of my writing and programming with Vim in a terminal. I use Emacs for just a few things -- browsing compressed archives, for example, and maintaining a todo list with org-mode. Evil-mode makes Emacs bearable.

I use pandoc's extended markdown for lecture notes, letters, slide presentations, handouts, and short articles. For books and more complex documents, I use LaTeX.

I use Makefiles and git just about everywhere, for code, websites, courses, and academic writing. Almost all of my open-source code is on github.

For email, I use mutt. It's slightly inconvenient for attachments and multimedia content, but for text-based emails it is incredibly fast and efficient. I use notmuch to index my mail so I can do full-text search, and procmail to sort incoming mail into folders.

To keep track of my schedule, I use Google calendar.

To manage my personal website and a few other websites I control, I use yst, a static site generator of my own design. yst takes data from YAML and CSV text files and creates web pages using nested string templates. My CV and my website are generated from the same data files, using different templates, so I don't have to enter things twice.

Most of the programming I do is in Haskell (though I also have projects in Ruby, C, and Lua). I use the GHC compiler with the Cabal build system. I would like to think that the time I've spent developing tools to make writing more efficient has been repaid by the time I've saved using these tools, but I'm pretty sure it hasn't.

I back up all of my important data remotely. At work, I use a script wrapping duplicity to do incremental encrypted backups to S3 buckets. At home on the Mac, I use a nice program called Arq, which also backs up to S3. It is not open-source, but all of the data is stored on your own S3 buckets, and there is an open-source program for retrieving it, so you aren't locked in.

I have recently started using Mendeley to manage my collection of academic books and papers. All of the papers I need to consult are stored in the cloud, so I can access them from any of my computers, and even from my iPhone. Before finding Mendeley, I used a home-made program to do the same thing, but Mendeley is better and worth the slightly higher cost.

What would be your dream setup?

I'd love to travel with a Linux laptop about the size of the MacBook Air, with 7+ hours battery life, and high reliability going in and out of sleep and attaching to wireless networks and external displays. (When I've traveled with Linux laptops before, I've spent far too much time getting these things to work; the Mac does them with no friction.) As a second choice, I'd take something like xmonad for OS X.

Though I love laptops, they cause one to hunch over, which is bad ergonomically. It would be great to have a laptop where the screen and keyboard could come apart, so the screen could be placed up high, directly in front of the eyes.

I also dream about a modern replacement for LaTeX designed from the ground up to target multiple output formats (at least PDF, HTML, EPUB).