Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

My Computer Setup

Lately I've been reading The Setup, a website where notable tech people talk about their hardware and software setups. Since I'm not famous enough to get interviewed for this site, I decided to just document my own setup here.

Who am I?

I'm a 6th-year Ph.D. student in the Department of Computer Science at Stanford University. My main research passion is developing practical tools to improve the workflow of computational scientists and data analysts. My typical work day involves a lot of systems programming in a UNIX-like desktop environment. I also make some web apps as side projects and maintain an extensive personal website.


I do casual work on my laptop (e.g., reading papers, taking notes, writing emails) either at home or in a coffee shop. My current laptop is an 11" MacBook Air from April 2011 (1.6 GHz Intel Core 2 Duo, 4 GB RAM, 128 GB SSD HD). I love how it's so tiny that I can carry it around with me almost anywhere in an Incase neoprene sleeve. I rarely carry a charger since my laptop's battery lasts for over 4 hours. I've used various Lenovo ThinkPad and MacBook Pro laptops in the past few years.

I do most of my serious hacking on an office desktop machine, which is either a Mac Pro or any modern PC running Linux (or sometimes Windows), depending on where I'm working. I don't care too much about hardware specs, since I don't do performance-critical work.

I've been using a Kinesis Advantage Pro ergonomic keyboard since 2005. I started using an Evoluent Vertical Mouse in late-2011 and enjoy it so far (although it's easy to accidentally click some of the buttons). I'm not too picky about office chairs or desks yet; my only must-have accessory is a keyboard tray for my Kinesis keyboard, which allows it to rest at the proper height.

I listen to music through a pair of Bose MIE2 in-ear headphones. I also have a pair of Bose Companion 2 computer speakers on my desk, which I blast when nobody else is in the office. But when I want silence, I simply put in a pair of foam earplugs obtained from the nearest drugstore.


Since I switch computers so frequently, I've adopted a spartan platform-independent setup that makes it super-easy for me to get started on a new Mac OS X or Linux computer. (I also sometimes work on a Windows machine, where I make heavy use of Cygwin and other free and open-source software.)

The core of my software world is Unison, a program that automatically backs up and synchronizes all of my files across different computers. Think of Unison as Dropbox for masochists. I back up all of my files to my university server and sync them to all of my computers. Thus, I never have to email myself files or carry around a USB stick. Also, if one of my computers crashes, then I can re-install its OS, restore my files from backup, and re-install my software within a few hours. Most of the software I use is free and widely-available, so I don't have to worry about licensing issues.

I work mostly with command-line tools in the terminal. I use iTerm2 for Mac OS since I can't stand the default Terminal app. The default GNOME Terminal on Linux works fine for me, though. I use Cygwin as my terminal when I'm on Windows. My custom .bashrc file is synced across all of my computers using Unison.

I spend most of my work day editing code, notes, websites, and papers in the Vim text editor. My .vimrc file is synced across all of my computers using Unison.

I maintain a plain text file that serves as my todo list, scratch notes, and informal calendar. I keep other notes in plain text files as well. This super-simple productivity setup has served me well for over a decade. My Gmail inbox serves as my secondary todo list, and I sometimes use Google Calendar, but not seriously.

If I need file versioning, I set up a local Git repository within the directory that I would like to be versioned (e.g., paper drafts, prototype code). I can then sync the files and version histories together with Unison. This way, I don't need to set up separate version control server software. I push my open-source software projects to my GitHub account.

I browse the web using Google Chrome, but I've never installed any extensions since I hate re-installing customizations whenever I switch computers. I rarely use bookmarks and usually have less than 5 tabs open at once. (I'm a notorious single-tasker!)

I write papers and other formatted reports using LaTeX and make slide presentations using Microsoft PowerPoint. I hear great things about Keynote for Mac, but I haven't tried it yet.

When I want to test my web apps locally, I use a free version of MAMP to setup a local webserver.

I sometimes use VirtualBox to run Linux on my Mac (or different versions of Linux concurrently on my Linux box).

When coordinating work with others, I sometimes use Dropbox's shared folders or Google Docs to avoid having to email attachments back-and-forth.

What's my dream setup?

I don't want to ever think about IT or sysadmin issues; I just want to get work done. In particular, I'd love to use some hypothetical dream power-user version of Dropbox that combines the flexibility of Unison with the automated "it just works" promise of Dropbox.

Created: 2011-12-10
Last modified: 2011-12-10
Related pages tagged as software: