New category: Seeking Pairs

Create a new post in this category (don’t reply here) if you’d like to find a fellow Upcase member to pair with.

I recommend you include your time zone, rough availability, ability level, and some ideas for things to work on.

Also, please report back here and let us know how the pairing went!

If you need help with the technical side of remote pairing, check out the following resources:


I had my first session with @abdulla_aden today, it went on for nearly 3 hours largely due to technical difficulties. We were both new to pairing so we decided to start simple and take a crack at one of the existing thoughtbot challenges. We chose to use the Madeye plugin for google hangouts to pair, but it seemed the editor they provide lacks pretty basic features such as creating new files. There was also a long delay between the time it took to sync file changes on the server and the local file system. Further, my partner tried 3 different operating systems but Madeye only seemed to work on his Linux boot. Eventually we had to resort to just using Vim and having Abdulla watch my screen on Google hangouts via screen share (which I guess technically disqualifies this as a proper pairing session).

We ran into some other tech challenges, he could hear and see me perfectly clearly, but there were times where I wasn’t able to hear him and he would occasionally disconnect from Google hangouts. I attribute this at least partly due to the fact that we were connecting between long distances (he’s near London and I’m way over in central Canada), but I also don’t think his WiFi connection was the greatest. It seems switching from WiFi to Ethernet on my end and reducing video bandwidth on his end helped a little.

While we didn’t end up writing much code in the end (due to the technical issues mentioned), we did manage to discuss a lot of high level concepts that my partner wasn’t familiar with. We managed to lay out a plan for exactly how we were going to solve the challenge, we simply lacked the time to implement.

Overall it was a good experience for both of us. Does anybody else have experience remote pairing over long distances? Is it always wrought with connectivity problems or can this mostly be attributed to a slow/poor connection?

A really easy way to pair if you are happy using vim or some other text editor, is to share a GNU “screen” session.

Two people can SSH to a server. Run ones “screen”, then the other runs “screen -x” and then you can both se and input into the same terminal window.

You could easily setup a light weight virtual server for this purpose at any cloud provider. It also has the advantage of being text-based rather than image-based so its quite fast.

@nozpheratu I hate to sound like a vim zealot; I’m not, even though it has changed my life for the better :slight_smile: but if you can get comfortable with a terminal based editor, you can try what we use. @echen1031, @bfaguy, @hdfelix, and @iedidiah pair quite a bit at our job. We all live in different cities / time zone. Here is what we do:

  • Install tmate which is a wrapper around tmux that makes pairing
  • When you run tmate to host a session you will get two ssh connection strings. One is readonly and the other is read/write.
  • You give one of those ssh strings to your partner, if they ssh to that host they are sharing your tmux session.
  • For audio we just use a google hangout (create one and make a tinyurl that points to it for easy remembering) and we turn off our cameras to save bandwidth.
  • Tmate / tmux is so much better than screenflow just because you are transmitting keystrokes instead video; the latency is so low that you often cannot remember who is hosting the session. The only headachy issue is that for some reason all of us chose different leader keys in vim and binding keys in tmux which can be maddening.

Don’t give up on finding pair partners and a technological solution. The overhead in setup is frustrating, but once you find something that works, the cross-pollination of skill, approaches, tips / tricks, even keyboard shortucts and such, can massively boost productivity and confidence. Plus, even though we do our best work while alone, we probably learn best when together, so the balance is critical.

Good luck!

@pdbradley Some great advice there. I use vim + tmux for all my development these days but my partner wasn’t familiar with working in the terminal so I had to try another alternative. Do you have any tools you like to use when you need to pair with somebody who doesn’t use tmux/vim?

@nozpheratu Well, I mentioned screenflow, which is pretty good, and free. I’ve tried so many different ones and at least screenflow lets you take over the keyboard now and then, and / or mouse.

But honestly it just…hurts…so…bad to fight with those limitations. Once you have tasted the heady nectar of a low latency shared tmux session you can hardly go back to hangout shared screens, screenflow, and the like.

I don’t think that many people use tmate, or maybe people don’t pair that much. I use from time to time and I usually give the mentor 'o the day a tmate ssh string to join me; they are always puzzled by it. But it makes the experience pretty awesome. And if the meter is running at $1 per minute or whatever you definitely want your partners to be in the fast lane.

Is there anyway to do pair programming without using a terminal editor? E.g. say just using TextMate or Sublime?

screenhero is a good way, but I think they have blocked signup right now. Also another good way is using cloud9.

But personally nothing beats the low latency pairing you get with tmux and vim. Even if you SSH into a small VPS its so much faster than dealing with full screen sharing options. Since vim and tmux are really good at rendering and re-rendering text, plus there isn’t much sent over the wire so latency becomes less noticeable.

The signup for screenhero is indeed blocked last I checked, but you just need to get an already registered member to send you an invite in order to register. Try asking here or twitter.

Only big issue with screenhero that I saw was that it only supports windows and mac but not linux. And yeah, you’ll probably end up running into lots of latency issues like I did.