2013/Remote Pair Programming
Remote Pair Programming: my setup, some advice, and a live demo^H^H stress test
Speaker: Sam Livingston-Gray
Return to this session's details
Notes by Colin Dabritz:
Remote Pair Programming @geeksam LivingSocial is Hiring (Hungry Academy?)
(other talk reference - missed this?)
Office? Lol no. Working for Living Social, office in DC, "local" Portlander was 45 mins away. Mic issues Working from home Learned TMUX and (re)learned VIM started packaging tools for remoting for the rest of the team
Late last year, we added iPads to the mix
Survey of various existing tools NB: remote-ness is not required! Many "remote" tools make in-person pairing better too.
Needs: To be able to hear each other (essential, needs to be high quality) Ideally see each other (optional, but surprisingly useful) Typing channel - IM/IRC whatever.
(anyone have to solve deaf/blind issues? - not quite, but dealing with non-native english speakers)
view code (essential) view other apps edit code (technically optional in some arrangements) -> COMFORTABLY! e.g. not someone else's VIM config, same plugins
e.g. shared standard environment is handy
Considerations How much bandwidth do you have to burn? How much latency can you tolerate? How many people are pairing at once? Different sets, e.g. 3 or 4 have different needs, some tools don't work Where is the code (i.e., who's hosting?) Related: security How easy is it to switch drivers? (driver/navigator roles discussion, don't use those roles for more than 2-3 minutes at a stretch) How comfortable is the shared environment for all participants.
Voice (medium bandwidth) Skype (N <= 25), Google+ Hangout (cameras off) (N <= 10), iChat (deprecated? N=2), IP over carrier pigeon, Phone (N <= 3)
Video (medium to high bandwidth) Skype (free: N=2; Premium N <= 5? 10?), iChat (and Messages, maybe?) (N=?), Google+ Hangout (N <= 10), FaceTime (N=2)
big blue button? Mozilla web rtc?
Viewing/editing Several categories Cloud9 IDE, MadEye, Floobits, CoVim, SubEthaEdit, Saros (legal/security teams tend to hate these), EtherPad (can SELF HOST), EtherPad lite (node.js based) [LightBox?] Screen sharing Skype, Join.me (good at getting around firewalls), ScreenHero, VNC, TeamViewer, similar functionality, lag time Terminal Sharing tools, SSH + tmux + vim/emacs/other. Variant: One dev hosts on local machine. Variant: All devs connect to remote server (possibly disposable)
Typical Setup? 1-2 hrs - use what they have, quick N>2 partners, dropping in and out? Hangout/Skype and ls-pair Same pair for days/weeks/months? FaceTime(iPad) and ls-pair. ScreenHero as needed for UI (both participants can mouse and type easily) [Prioritized SSH traffic on router, so pairing still works when Netflixing]
ls-pair The repo contains: standard config file for tmux with all keybindings. standard vim environment and set of plugins an install script for wemux, .tmux.conf, .vimrc [wemux helps sharing screen temporarily] some (OSX only) scripts for setting up users. a bunch of SSH pub keys and a README with checklists and advice ("preflight" checklists)
Protips Always surprised at how much time it takes to get set up with a new pair partner (issues can eat half of time) Firewalls sometimes be difficult to connect to a pair partners machine if your work has VPN maybe you can have it set up to forward P2P traffic on port 22? (allows SSHing over VPN) LogMeIn's Hamachi lets you set up ad-hoc VPNs (free <= 5 machines network) Get a Real Mic… if you want your pairs partners to hear you IF you are in a quit room you might be able to use your laptop mic… but even so an external always sounds better. Get anything Earbuds, Voip gaming headsets, Podcasting mic etc. [Snowball serious mic, good headset] .. or an iPad - FaceTime on iPad sounds pretty good with built in mic (oddly Skype/hangout do not) Please don't breath into it
Worst. Feature. Ever. Google hangout mutes you if they think you are typing. If at all possible run your video on separate hardware. It won't steal CPU from your work. (video got choppy.. what? oh sorry, I was running the test suite.) video/telepresence If you keep the incoming in the same place always visible close to your camera it starts to feel less artificial and more like a strange window into (another persons room)
Primate bandwidth Video - smiles, wings, glances, posture voice - tone, laughter Text - ;)
Resources http://pairprogramwith.me (find resources, partners, practice) hash tag #pairwithme
Experiment with DDoSing TMUX (10 minute TMUX intro on pair programming site - TMUX has 'least common denominator' size)
(large shared wemux session)
Question on roles in pairing remotely
Minneapolis python grp. (?) is having a pairing talk with remote participants.
Does pairing preclude individual from using custom TMUX? (e.g. does ls-pair?) no it doesn't. Default is shared keybinding, just for expediency in getting people set up.