Blog Posts tagged with: pair-programming

Aug 20 2013

Comments

Craig Andera - Podcast Episode 038

cover art

You've had the joy of listening to Craig's insightful questioning of our guests for a long time now; it is our great pleasure to turn the microphones around and capture Craig Andera on the other end of the questions. Guest host Justin Gehtland gets Craig to talk about his career path that led to working at Relevance, his changing taste in technologies, and the genesis and details of ThinkRelevance: the Podcast. We hope you enjoy getting to know Craig a little better.

Listen to or download this episode.

Read More »

Sep 02 2010

Comments

Notes on Remote Pairing

Here at Relevance, we're committed to the idea of working in pairs. But as the company grows beyond its Durham headquarters, we have more and more people working outside of the office. Pairing is hard enough by itself, but pairing remotely is daunting. This post documents some of the software and processes we've tried.

Being a Mac-heavy office, we started with iChat and its screen-sharing feature. This is quick and easy, and works fairly well for brief use. But several Relevancers have gone multiple-monitor in their home offices. iChat screen sharing doesn't play well with multiple monitors — it shrinks both "host" desktops to fit on one "guest" screen. Also, the audio quality isn't that great, and the connection is flaky on residential Internet.

We switched to Skype for audio chat. The sound quality is much better, but its screen-sharing feature is view-only. We tried VNC for screen-sharing — both the VNC server built-in to OSX and third-party alternatives — but it's much too laggy for any serious use. We even tried a few commercial products, of which TeamViewer was the best. It supports multiple monitors (guests can choose which host monitor to view) and has better responsiveness than VNC. But the license is expensive, and it's still not perfect, especially when the members of the pair have different-sized screens.

The fundamental problem with remote pairing by screen sharing is that one half of the pair is at a severe disadvantage. The "host" is working on a local machine, with no lag or display artifacts. The "guest" is looking at a fuzzy screen with several hundred milliseconds of lag. That might not sound like much, but it's hard to be effective when the text on the screen is half a second behind your typing.

So for the past few weeks I've been experimenting with a different mode of pairing that tries to put everyone on the same level playing field. I set up a persistent Amazon EC2 instance running Ubuntu GNU/Linux and all our favorite development tools. Both members of the pair can SSH into the instance and share a terminal session with tmux. There are still lag issues, but at least everyone has to deal with the same lag.

tmux is a great tool, although there are still configuration headaches. You don't realize how complex "dumb" terminals can be until syntax highlighting renders all text in blinking red italics for one user and completely invisible for another. The trick is to get everyone on the same terminal application (usually iTerm) and match up the TERM environment variable at both ends. Then there's the Emacs/Vim debate, but that's not a problem we're going to solve any time this century.

Pairing in text mode is more efficient, bandwidth-wise, than in graphics mode, but you can't share a web browser to debug a web app in your terminal. (Yes, there are text-mode web browsers, but that doesn't help you debug HTML layouts.)

VNC, we know, is slow, but there are newer remote-screen technologies for Linux, such as the open-source NX protocol. NX is much faster than VNC, with better display quality and security. The free client and server packages from NoMachine.com allow two users to share a single X-Windows session. Just one quirk to deal with: unlike VNC, NX renders the mouse pointer locally. Effectively, each user has their own mouse, and cannot see the other's. This is fine most of the time, until you want to literally "point" at something on the screen to draw attention to it.

Another upside to pairing with NX is that the "remote" window only needs to be big enough for a single shared application, such as a web browser. Each member of the pair can keep their own desktop with their own email, chat, and other applications.

This setup works pretty well, in my opinion, although recently we hit another snag: certain jobs require us to interact with servers on VPNs behind corporate firewalls. We haven't figured out how to make an EC2 instance connect to a VPN while also remaining available to the pair that is using it — I'm not sure if that's even possible. (Amazon's "Virtual Private Cloud" seems geared toward large enterprises with many IPs, not a single instance.)

So that's the current recipe: Skype for audio, tmux for text editing, and NX for shared web browsing. It's far from perfect, but we've managed to get work done this way. Do you have techniques or tools you use to help remote employees stay connected? Let us know!

Aug 04 2009

Comments

Pairing and Conversations with Corey Haines

Corey Haines was in our neck of the woods recently, and we were delighted to host him for three days of pairing and great conversations. We're very fond of the craftsmanship model of software development, especially as a method of training. Although we haven't gone about it as explicitly as Corey has in his journeyman tours, we all feel that we learned our skills largely through working with great programmers. (And if we had it to do over again, we'd seriously consider following Corey's example and really being journeymen for a while.) Our interview process here involves a full day on-site, pair programming with members of our team, and we often learn cool things from even that amount of cross-pollination. So we felt especially fortunate having three days with Corey.

Corey arrived with an interest in Clojure, so he spent most of his time pairing with Stuart on one of our Clojure projects. And he stayed with Muness, in his apartment right upstairs from our office. The result? Two cool video interviews:

We couldn't be happier with how these turned out. They highlight Stuart and Muness and their passions, but they show a lot about the rest of us here at Relevance as well. Thanks, Corey!

Popular Tags