We're lucky to have tools available that have made collaborating from home for the last year much more bearable. There are the tools that everyone knows, such as Zoom, Slack, Notion and G Suite. They're mostly fine, and we use them too, but I wanted to write about two tools that might be a little less well-known and that we've come to rely on.
We do a fair bit of pair programming at MAD. Traditional screen-sharing tools don't always make remote pair programming enjoyable, as there's no way to quickly switch who's in control of the keyboard, and latency often gets in the way of a train of thought.
Enter Tuple, an app made specifically for remote pair programming. A native macOS app with a C++ WebRTC core, it feels more immediate than everything else out there. It also allows you to point at a location on the screen and even draw on it, which really helps with quickly communicating an idea.
It's the closest thing to programming together at one desk that I've seen.
There are sometimes bugs, and we've been impatiently awaiting some upcoming features, such as improvements to three-person pairing sessions, but those are actively being worked on and updates have been frequent. There's also a Linux client in the works.
It's rare that a day goes by without a Tuple session, which says a lot, I think.
Having designers and engineers sit together at one screen to go over the finer details of an interface, or to do some live prototyping, is instrumental to our process. It's where we find ideas and improvements that can't be found any other way: Obsessively resizing the viewport, clicking on elements again and again, zooming in and out, screen-recording animations to pore over them in slow motion. Screen sharing doesn't cut it in this case, as glitches and latency come in the way of the pixel- and millisecond-level precision that is necessary for this process.
Tailscale is a zero-config VPN that, among other things, allows you to share your localhost with team members anywhere in the world. After installing the app and authenticating via an existing identity provider, such as G Suite, Okta, Active Directory, you're assigned a stable IP address that is only accessible to people on your team.
This means that, when working together, saving a file is enough to update the website in a team member's browser. No waiting for staging deployments or sending files around.
Tailscale is built on top of the Wireguard protocol, which is a faster and simpler alternative to IPsec created by Jason A. Donenfeld. Wireguard provides the data plane while Tailscale acts as a controller and handles public keys, adding and removing devices from your network, and so on.
Tailscale is capable of much more than sharing your localhost. You can install it on your Linux servers and share internal services without exposing them to the open internet. David Crawshaw, one of Tailscale's co-founders, describes the motivation beautifully in "Remembering the LAN".
Together, these two tools have given back to us some of the immediacy of face-to-face interaction that we used to take for granted. Give them a spin.