Uses This

1278 interviews since 2009

A picture of Justin Searls
Image by Oliver Lacan.

Justin Searls

Programmer

in developer, mac

Who are you, and what do you do?

I'm a programmer, career-long consultant, and co-founder slash CTO at Test Double. We're an agency of experienced software developers on a mission to improve how the world writes software and are humbled to work with some of the coolest clients imaginable—like GitHub, Zendesk, and Betterment—as we build great software alongside their engineers.

As for what's unique about me, I joke that I'm a bug magnet—if you enjoy seeing software fail in amusing and/or outrageous ways, that's most of what you'll find on my Twitter feed. Looking back, it's no wonder that software testing was of interest to me—that's where I got started in writing open source and giving conference talks.

I've been creating content online since the mid-90s and as a result have assembled the same set of amateur skills as many other early Internet People who wanted to be able to publish stuff independently: writing, programming, visual design, image editing, photography, and video editing. I'm also on the road a lot—I speak at conferences, travel to Japan often, and generally tend not to stay in one place for very long. As a result, I tend to prioritize for lightweight, multi-purpose tools that can be assembled into portable load-outs designed for each trip or outing.

Recently, I have for some reason found myself traveling significantly less often, so I've finally had the opportunity to design a static workspace for myself over the last few months since returning from a year in Japan and then moving to Florida.

What hardware do you use?

Let's start with the physical space, then move onto the computery bits, before covering all the silly accessories.

Surfaces & seating:

  • I have a dirt cheap motorized desk that I oscillate between sitting & standing heights throughout the day
  • I keep a second cheap table to the left as an overflow sidecar in order to keep my main desk clear. Most of the time it's covered in a smattering of device chargers (cheap productivity protip: keep your phone out-of-reach of your mouse & keyboard)
  • I variably sit, kneel, perch cross-legged, and lean on a Steelcase Leap. It's fine, but I don't think a chair exists that I would be comfortable in for more than 30 consecutive minutes
  • I get a lot of exercise these days, but when I'm not moving around so much, I'll throw a walking treadmill under the desk at 2.5mph for a few hours in the morning

Computers & peripherals:

Since I bought my first Mac in 2004 (a 12" iBook G4), I've always traded-up aggressively to each new model on the theory that a Mac's resale value is usually high enough that the marginal cost of each new machine is relatively low—especially for a device that I'll often use for 10 or more hours a day. Separately, my experience with software testing taught me the power of fast feedback loops: an operation that takes 2 minutes to perform can be run 80 more times in an eight-hour workday than an operation that takes 3 minutes. That means even marginal "speed bump" upgrades in performance can not only dramatically improve my maximum theoretical productivity, but also increase my ability to focus on a continuous train of thought while reducing the likelihood that I'll distract myself with e-mail, Slack, or Twitter.

Given the above rationale, the current answer to the question of "what computer do you use?" is a maxed-out 14" M1 MacBook Pro. But whenever you're reading this, the safe answer to the same question will be whatever the smallest portable Mac that doesn't compromise significantly on display quality or processor speed is (with the RAM & storage options maxed out). Because I'm all-in on the Apple ecosystem, I'm stuck paying the outrageous Apple tax on larger SSDs; everything is made easier when I'm able to keep my entire iCloud Drive and Photos libraries locally on my primary Mac, and those weigh in at just under 2TB these days.

Next, for input/output devices:

  • LG 34" 5K2K ultra-wide Thunderbolt 3 display. This monitor is a mouthful and a table-full. It's also the only "retina"-tier ultra-wide display that supports (or has ever supported) Thunderbolt. The only one. (Thunderbolt matters to me, because when I'm not able to connect a Mac to a display and every accessory with a single cable, I'll never bother unplugging it at all.) The LG's image quality is fine, in a category where "fine" is pretty much the pinnacle of the market. Even Apple's $6,000 Pro Display XDR can be really frustrating as a daily driver if you're not using it for color grading—the bloom around its scant few dimming zones is super distracting, as is the explicable-but-unforgivable dimness around the edges of the display. The LG rocks a mediocre speaker, a Windows-only firmware updater that takes hours to run, and a USB controller that occasionally drops power to either of its ports at random. The most frustrating thing about this monitor is that it will frequently fail to handshake properly over Thunderbolt when a device is sleeping, which in turn requires you to disconnect your computer and wake it before the display itself goes into hibernation. It's also 3 years old and not getting any younger. Anyway, this is the best monitor on the market as of October 28, 2021, and hopefully not for much longer

  • Microsoft Sculpt ergonomic keyboard. Its basic ergonomics are so easy on the wrists that I have a 10 year supply of this keyboard in my closet. This is all in spite of their garbage RF dongles, which are so prone to interference that I attach one to a USB extension cable that's taped just a few inches from the keyboard itself

  • Razer Naga Epic Chroma. This embarrassingly over-the-top gaming mouse has so many (17!) buttons on it that I keep it around—despite its garishness—only because I can bind its keys to macros for repetitive tasks and effectively one-hand entire workflows. Programmers often look down on using the mouse as if taking your hands off the almighty keyboard is an admission of inferiority… but when I'm editing images with this thing, the reverse becomes true: any time I need to touch the keyboard is an exception to be automated away

  • I keep a Magic Trackpad 2 on my desk, but only for scrubbing audio & video timelines. Oh, and for the handful of (bad!) apps that require horizontal scrolling but ignore the macOS setting to always show scrollbars and don't give you any other way to navigate them

  • A shattered-beyond-all-recognition iPhone 11 Pro serves as my webcam, since its front-facing camera still works. It's connected to the Mac via lightning and in conjunction with the fantastic Reincubate Camo app, which provides a driver so that macOS treats it as a normal camera input. It's not a fancy DSLR, but this setup still beats the pants off any camera Apple has ever shipped in a Mac (including the 1080p FaceTime camera on the M1 iMac). And because I have a window behind the desk, my face is illuminated by a pair of Elgato Key Lights Air (along with a spiffy HomeKit automation that turns them on and closes the shades)

  • When it comes to recording audio for podcasts & screencasts, I do my best to outsource all decisions to Gary Bernhardt, who has dedicated far more time & energy to audio production than I ever hope to. Thanks to him, I can impersonate any of your favorite Twitch streamers with my Shure SM7B microphone connected via a no-nonsense boom arm to an SSL 2+ audio interface. I only barely understand the words I just typed, much less why they represent high-quality products, but everything seems to sound halfway decent, so I'm happy with it

  • For listening, I oscillate between AirPods Pro and AirPods Max (the Apple integration is great, when it works) for meetings & music and use these (Gary-selected) ATH-M50X cans for monitoring & editing.

  • Finally, when I'm away from my desk, I drag a 12.9" iPad Pro clipped to a weighted gooseneck stand and then use Sidecar to mirror displays so that I can work from anywhere around the house without craning my neck or hunching over. (If you experience any neck or wrist pain when using a laptop as a laptop, I strongly recommend giving this a try!)

Networking:

One of the perks of moving into a newer house is that it was remarkably easy to network everything. Here's the rundown on what lives in or is otherwise connected to my patch box:

  • The smattering of disparate hardware you need to put a home network on Ubiquiti's Unifi architecture:
    • Security Gateway which serves as a router
    • Cloud Key Gen2 which serves as the router's (and all your switches') administrative controller
    • Switch Lite 16 PoE which provides 8 normal ethernet ports and 8 power-over-ethernet ("PoE") ports which can send enough power over the wire to allow downstream switches and WiFi access points from needing their own power supply
    • 4 Switch Flex Mini switches, each connected to a wall and powered over ethernet
    • 4 Access Point HD devices for great WiFi coverage throughout the house, which miraculously happened to already have capped ethernet drops in the ceiling
  • A UPS small enough to cram into the box in order to prevent the network from going down every time the power hiccups, which happens an awful lot in Florida, apparently
  • A Raspberry Pi 4 running Homebridge, so I can make all my non-Apple-blessed stuff work with HomeKit
  • What's left are hubs and dongles for home automation, like Lutron for lighting and Rollease for shades

And what software?

Before, I mentioned how important optimizing for fast feedback is to me, and the primary reason I upgrade my hardware as often as I do. On the software side, I'm trying to eke out speed and reliability however I can, and the single most effective method I've found is pretty stark: at least twice a year, I wipe the entire system, reinstall the operating system, and never restore a backup. And while it's true that as APFS has matured, macOS itself is increasingly hardened from literal corruption, a user's lived experience is still plenty susceptible to faulty system extensions, resource-intensive launch daemons, and infestations of busted configuration files in the sprawling ~/Library directory. This is to say nothing of the cruft I knowingly add to my system that I only need for a short while or that can't be uninstalled completely.

Because there's no surefire way to "clean" a Mac other than to blow it all up and start over, I've just forced myself to get really good at starting from scratch. My goal is to minimize the time it takes to go from a clean copy of macOS to being able to run my code with all my tools just how I like them. Part of that means I hew to the system's defaults where I can stomach them and part of that has resulted in me assembling a large collection of dotfiles and setup scripts, including a single setup-new-mac executable that carries out the entire process, start-to-finish. Last summer, I documented my setup routine as a screencast, if you're interested in following along.

Once my setup scripts have run and the iCloud syncing & machine learning dust has settled (which always takes a few days no matter what the system UI tells you), here is the most noteworthy software I use:

  • I stick with almost all of Apple's stock apps (Mail, Calendar, Safari, Notes, etc.), for the sake of continuity across my devices and first-class support for all of Apple's peripheral tendrils of its ecosystem like HomeKit, Shortcuts, Siri, CarPlay, Apple TV and HomePod. The only notable exception being Things, which will just always have a faster and more keyboard-friendly UX than the stock Reminders app, despite its worse Siri support and lack of sharing and location tagging. That Safari has been my daily driver browser since 2004 is probably the most controversial thing here, but I've personally never found the UX of third-party browsers (most notably, Chrome, which I don't even install anymore) to be nearly as fast or intangibly "native-feeling". Safari's developer tools are indeed subpar by comparison, but its responsive design view is still pretty much the best way to see how a web site will behave on an iPhone or iPad short of running in a simulator or on device

  • Speaking of things I refuse to install: I've become increasingly conservative about third-party apps I allow to run in the background, especially with any privileged access. I dropped Dropbox and Google's file sync applications years ago and never looked back, for example. In general, the fewer things you have running, the fewer reasons things have to fail

  • Every file on my system that matters and which can't be restored easily from GitHub or the Mac App Store is both synced to iCloud Drive and backed up using Backblaze, which I've found to be less fussy than rolling-my-own cloud backup backend with Arq

  • As for programming, I just can't quit vim. I run it in stock Terminal.app, installed via Homebrew, using this minimal-ish config and these plugins. My goal with the config, which Aaron Patterson helped me get started with, is to make Vim an excellent code navigator and task runner with as few GUI-wannabe components as possible

  • Divvy for window management, with keyboard shortcuts configured for full-screen, half-width, and 1/3rd-width window arrangement. The primary reason I use an ultra-wide monitor is to have a no-compromises side-by-side of my code and whatever's running it (usually a second terminal or a browser). Even so, unless the thing I'm doing requires multiple windows, I'll almost always full-screen whatever I'm doing to reduce visual distraction

  • Speaking of distraction, I use Hocus Focus to automatically hide any inactive windows. That way I can spend more time uni-tasking without my eyes being drawn to out-of-focus apps in the background. I also run Marco Arment's Quitter and use it to kill Mail and Messages after a minute of inactivity, so that I can command-tab between apps without risk of seeing an unread message badge or accidentally landing on either inbox. (As for related tools I don't use: I never install Slack on my system; it's relegated to web site status and I visit a few times throughout the day so that I don't glue myself to it.) As with my obsession over the speed of feedback loops, my objective in eliminating opportunities for distraction is to maintain continuity of line over whatever I'm working on for as long as possible

  • For command-line apps, almost anything can be automated away with a script, but GUI automation is harder. Even with the Shortcuts app, the single best tool for automating the GUI (including identifying inaccessible visual click targets) is Keyboard Maestro, which I've used for everything from cropping & adjusting thousands of pictures in Adobe Lightroom to slurping my eBook highlights from the Kindle app into my Japanese memorization tool

What would be your dream setup?

My software wishes are as asymptotic as they are impossible: I "just" want everything I use to be infinitely fast and exhibit zero bugs. (There's a reason I thought software consulting would be an evergreen source of business opportunity.)

For hardware, I have exactly two short-term wishes:

  1. A spiritual successor to the 12" PowerBook G4, that provides no-compromise tech specs in an ultralight form factor. Until then, I'll settle for the 14" M1 Max MacBook Pro

  2. A high-end consumer display from Apple that has great display quality, passable speakers, a decent FaceTime camera, and some way to drive the display from non-Mac hardware, as I've got my gaming PC to consider. (Note that even in my dreams I know not to wish for anything better than a "decent" FaceTime camera.)

Medium-term, I hope we eventually see some kind of "convergence" device from Apple. Something with the physical permutability of an iPad with the freedom to run unordained, Mac-like software on it. I don't think we'll ever see an iPad that can dual-boot into macOS, but I wouldn't be so surprised to see one that can convincingly run macOS in a safely-sandboxed VM, which would be more than enough for my purposes.

Long-term, as a VR enthusiast and Valve Index owner, I'm always hopeful that the market segment will take off in a useful way before Zuck reinvents the bad-guy corporation from Ready Player One. This has me irrationally hopeful that Apple Glass will find a way to become a meaningful product to anyone who likes VR for immersive experiences and AAA gaming—which isn't at all likely unless Apple buys Valve. One unintended consequence of a popular high-resolution, lightweight convergence AR/VR device could be the death of the stationary display panel industry—what purpose would they continue to serve? As somebody who doesn't like to stay in one place for too long, I'd be in line on day one.