In the past we’ve used iChat screen sharing in the office for pairing on laptops, but with two people both at the end of a DSL connection, the screen + voice bandwidth demands are pretty high, and the guest user is at a painful disadvantage.
Vim is currently undergoing something of a rennaisance at Eden Development. Several of us have been trying to use it for all our coding. Fortunately this has stood us in good stead to take advantage of a great low bandwidth pair programming solution.
John Haruska gives a great overview of different remote pairing solution and outlines how to use screen to set up a shared terminal. Unfortunately we weren’t able to use the acl method to allow different UNIX users to share a ‘screen’ on our macs, but if both users logged in to the same unix account it worked like a dream.
Our basic process is:
User 1 sets up a screen as a shared user on the host machine
pairing$ screen -S pairing Ctrl-a :multiuser on
User 2, logs into the maching via ssh, and connects to the shared screen
local$ ssh pairing@shared_machine pairing$ screen -x pairing
That’s basically it. Both users then have access to a full shared terminal environment. A shared screen can have multiple windows, so we tend to work with one screen for vim and another for running tests and other terminal commands. We also make extensive use of vim tabs and shell execution from within vim.
A couple of tips:
- make use of the GNU screen scrollback buffer
- remote pairing can be quite intense, we find using The Pomodoro Technique really useful in helping combat that - see http://tomatoi.st/ for a shared timer.
- audio is essential, but having a video link is even better
- SSH requires some kind of NAT/firewall traversal - we found it simplest to just connect to the office vpn.