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 David Crawshaw

David Crawshaw

Co-founder, CTO (Tailscale)

in bsd, developer, linux, mac, windows

Who are you, and what do you do?

I am co-founder and CTO of Tailscale. I like to write code and help others write code.

What hardware do you use?

My setup grew to deal with 2020. I have four computers:

And what software?

My primary development machine is the MacBook Pro 16". I have a lot of feelings about macOS: it is astonishingly painful for developers, but makes up for it with a consistent experience for users. To be a programmer is to be both, so I pick macOS for the good fonts and reasonably-consistent experience that adapts to decades of changing hardware.

The laptop is mostly plugged into an external screen. I find laptops to be mostly a disappointment. Each week I check to see if an iMac 5k with the new CPU line has been released.

The 2014 iMac 5k I dedicate to video conferencing, mostly Hangouts and Zoom. It got pulled out of mothballs in early 2020. Microphones are important, so I have an Elgato Wave:3 and open ear headphones. I also attach the back camera of an iPad Pro. Using a dedicated machine lets me turn away from my work to focus on who I am talking to. Also on large calls I don't have to listen to a laptop fan trying to keep up.

As I can't pin down the latency characteristics of WiFi, I ethernet to all of my computers. Cutting a few milliseconds out of audio lag makes conversations (which WiFi introduces... randomly) makes a difference.

The Headless AMD Threadripper is running Proxmox. My main Debian environment runs as a VM here, along with various Windows test VMs, and an Ubuntu VM running matlab for my SO. Mostly I connect over ssh to Unix, occasionally RDP. When I switch away from programming in Go, I switch to this machine to run slow compilers (like llvm).

All the sockets between my computers are over Tailscale, so whenever I grab the laptop and leave the house, the connections to my VMs and NAS remain stable. I use the sharing feature to give friends and family access to the NAS. This also doubles as an exercise in eating your own dog food.

Debian is a decent programming environment. It has some of the consistency properties like macOS, but fails unexpectedly. I tried to create an rc.local file last week, but those are gone apparently. My previous attempts to get 4k screens working on Linux failed, so I stick to 5k Mac desktops. Overall, Debian is fine.

My router / small NAS is an ongoing experiment. I switched it to Linux for disk performance but would like to get this back to OpenBSD. (I miss pf.)

The router and Proxmox machines are attached with some QSFP+ 40gbit hardware I got off eBay. It's fun! I highly recommend playing with second-hand network hardware.

For writing software I full-screen a terminal and use Vim. Ctrl+Z for a shell. Every now and again I go searching for a replacement IDE. VSCode came closer than anything else in the last two decades to replacing Vim, but somehow I am back here.

What would be your dream setup?

Realistically: an iMac 5k with an M-series CPU.

If I really wanted to dream: a hackable Unix system with an integrated 5k+ screen and X server, and the OS keeps up to date with improving hardware without moving things around on the screen or changing keyboard shortcuts. But that dream seems to be getting further away.

Uses This is supported by ZSA, makers of the Moonlander, ErgoDox EZ and Planck EZ keyboards. They also publish an awesome newsletter.