The Setup


What do people use to get stuff done?

Mitchell Hashimoto

Mitchell Hashimoto

Entrepeneur, developer (Vagrant)

Who are you, and what do you do?

I'm a developer, entrepreneur, author, and speaker. I'm most known for my work on Vagrant. Last year, I started a company HashiCorp to work on Vagrant and tools in general. I currently live in San Francisco. You can often find me hiding around in various coffee shops in the city, drinking sparkling water or hot cider because I don't actually drink coffee.

What hardware do you use?

My primary machine is a 13" Retina MacBook Pro. I realized about a week after buying it that the economics of buying a fully-loaded 13" MacBook Air are actually better in terms of raw specs, but I fell in love with the screen too quickly, and wouldn't return it. This is the machine I use day in day out.

I hook up my laptop to a Crossover 27Q monitor, one of those Korean IPS monitors I bought from eBay. The color and screen quality is incredible, and I'd highly recommend it. My 27" high-resolution monitor only cost around $350. I use both the 27" screen and 13" screen at the same time. The 13" screen usually just has music and/or chat on it, though.

I carry around a 1 TB SeaGate external hard drive that has saved virtual machines of almost every version of every major operating system imaginable: Mac OS X (10.5, 10.6, 10.7, 10.8), Windows (XP, Vista, 7, 8), Ubuntu (10.04, 12.04), CentOS (5.x, 6.x), FreeBSD, OpenBSD, and more... many more.

In addition to my virtual devices, I have a ThinkPad T410s and a ThinkPad T410 for native Windows and Linux testing, respectively. These machines stay at home. I also have a 2010 MacBook Pro that I should've sold a long time ago. I haven't booted that thing up in years...

I read Reddit nightly on my iPad.

My mobile phone is an iPhone 5.

And what software?

Vagrant, of course. I virtualize almost everything. Why do anything on your real computer when you can create a perfect sandboxed environment to do it instead? I rarely work on performance-critical applications, so this actually works out very nicely. I use Vagrant with VMware Fusion, because Fusion is just better than VirtualBox. Fact.

While the software is running Vagrant, I edit text in vim. I use iTerm2 as my terminal, I can't live without the splits! (command-D, shift-command-D, MEMORIZE IT!) I browse the internet using Google Chrome.

I code primarily in Ruby and Go, and for that I don't use anything special, just the standard command line tools that come with them. For Go, golang-crosscompile is a must-have.

I use Git for version control. Even when my publisher, O'Reilly, forces me to use SVN for writing books, I just use git-svn. I love it.

Fun fact: I'm going to age myself here, but I've never used anything but Git in a professional environment. I've used Git since early 2007. Prior to that, I used tarballs for "version control." So don't even ask me to use SVN or something, because I have no idea what you're talking about. Haha!

I use Slate for Window management. I love love love xmonad but it only works with X11 on Mac, so Slate is the next best thing. It allows me to control all my windows without a mouse, and to save certain layouts, so that when I switch between different setups, I just hit a keyboard shortcut and I'm ready to work. No futzing around with windows.

Alfred is indispensable if only for the clipboard history. I love going to websites and copying a handful of different things, and having access to all of them when I need it, rather than copying, switching windows, pasting, switching back, copying the next thing, etc. Honestly I only recently started using Alfred, so I'm sure it'll become more integral in my workflow in the future.

What would be your dream setup?

In terms of hardware, I want a machine with exceptionally good battery life. Ideally I'd like to see laptop battery life reach 12 hours under normal workloads, and maybe 18+ hours idle (for example when I'm just staring at my text editor thinking). That would be great. My current laptop can last 6 hours or so while editing text which is pretty fantastic, but I'd love to run a ton of virtual machines, compile code, etc. and just not worry about sacrificing battery life.

In addition to battery, I'm looking forward to an internet-everywhere world. I carry around a MiFi now, which is similar, but in my dreams the cellular networking is built-in to the laptop and is globally capable. I really hate getting a new MiFi for every country I visit. I really want the world to agree on a hardware, software, and business level so that we can have seamless internet connectivity across the entire developed world.

I want virtualization to reach a point where I can run any operating system virtualized with almost no penalty. This is going to take a lot of effort with hardware (more virtualization extensions) and software, but even if I can get consistent 90% performance in CPU, I/O, networking, etc. all virtualized, I'll be a happy boy. I already enjoy carrying around almost every OS with me at all times, but having an almost no-penalty ability to run them would be incredible.

I'd say I want less local storage and more things to move into the "cloud," but personally I'm almost there already. If my laptop were to burst into flame right now, I'd be pretty sad cause that was an expensive laptop... but my data would almost all be safe. Everything I need is in some cloud service. I'd go pick up a new Mac at the Apple Store and be up and running in less than an hour. No problem (although financially that sucks).

Previously: / Next up: