SlideShare a Scribd company logo
1 of 80
Evan Light
@elight
evan.light@rackspace.com
About me
^
a bit
“Lonely Bunny” by valkeeja
Remote Pairing
from the comfort of your own shell
“Remote Pairing Stacks
I’ve Tried and Thrown
Away”
Mk I Remote Pairing Stack
(2009 give or take…)
A/V chat via Skype
Skype Screen Sharing
Shoulder surfing
We’re all Tony Stark
We hack
We experiment
We evolve
Mk II
A/V chat (then) OSX Chat app
OSX Screen Sharing
Mk III
A/V chat via Skype
Vine VNC (OSX)
tmux
wemux
demo
tmux cheat sheet
Command Action
C-b c New shell
C-b n Next shell
C-b p Prev shell
C-b ' Split horizontal
C-b % Split vertical
C-b <arrow> Move to window
Mk IVBlank slate
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for shells and session sharing
vim
terminal-based editor
vim + tmux =
modality2
demo
vimux
Mk V
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for shells and session sharing
vim with vimux
demo
The Dream:
Shell in the editor
Conque
Mk VI
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for session sharing only
vim with Conque
zsh is sad… 😞 😞 😞
no demo
just no
no.
yes, emacs
Mk VII
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for session sharing only
emacs and eshell
Mk VIII
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for session sharing only
emacs and term
result:
Close
Mk IX
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for session sharing only
emacs and shell
result:
Not quite
multi-term
Mk X
A/V chat via Skype
Host pair on my Mac
Wrote provisioning scripts
create user
add SSH public key
tmux for session sharing only
emacs and multi-term
zsh is happy here! 😄 😄
demo
Hosting on OSX
An awful idea
ISP
dynamic IP / DNS
router port forwarding
firewall
file permissions
Mk XI
A/V Chat via Skype
Manually configured cloud host
Manually provision pair
tmux for session sharing only
emacs and multi-term
https://github.com/elight/pairing-server
A/V Chat via Skype
Vagrant-provisioned cloud server
Manually provision pair
tmux for session sharing only
emacs and multi-term
Mk XII
(Spring 2014)
demo w/ Sean
What’s left?
Automate provisioning pair at server create
Maybe using something like keybase?
Container-ize non-pair provisioning
Update pair to automatically wemux attach at
login time
Better term than multi-term?
vim-tmux-navigator
Tips & Tricks
Chat window position
Translucent terminal
A/V window near camera
Step-wise bandwidth
reduction
Useful for:
Public wifi (QOS)
3G
Developing world
“Let me drive”
(Remote) pair
For further inspiration see:
pairprogramwith.me
tmux: Productive Mouse-Free
Development
Evan Light
@elight
evan.light@rackspace.com

More Related Content

What's hot

Your own minecraft server on a linode vps
Your own minecraft server on a linode vpsYour own minecraft server on a linode vps
Your own minecraft server on a linode vps
Cleo Morisson
 

What's hot (19)

CRaSH the shell for the JVM
CRaSH the shell for the JVMCRaSH the shell for the JVM
CRaSH the shell for the JVM
 
WordPress modern development
WordPress modern developmentWordPress modern development
WordPress modern development
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual Machine
 
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ... Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
Laravel Poznań Meetup #12 - "Speed up web API with Laravel and Swoole using ...
 
EmacsConf 2019: Interactive Remote Debugging and Development with TRAMP Mode
EmacsConf 2019: Interactive Remote Debugging and Development with TRAMP ModeEmacsConf 2019: Interactive Remote Debugging and Development with TRAMP Mode
EmacsConf 2019: Interactive Remote Debugging and Development with TRAMP Mode
 
ClusterDesktop how-to use on Mac
ClusterDesktop how-to use on MacClusterDesktop how-to use on Mac
ClusterDesktop how-to use on Mac
 
Connect to blumix vm with vnc
Connect to blumix vm with vncConnect to blumix vm with vnc
Connect to blumix vm with vnc
 
Create docker image with bluemix dev ops
Create docker image with bluemix dev opsCreate docker image with bluemix dev ops
Create docker image with bluemix dev ops
 
[Greach 2016] Down The RabbitMQ Hole
[Greach 2016] Down The RabbitMQ Hole[Greach 2016] Down The RabbitMQ Hole
[Greach 2016] Down The RabbitMQ Hole
 
Meryliza muabbad how_to_use-jing
Meryliza muabbad how_to_use-jingMeryliza muabbad how_to_use-jing
Meryliza muabbad how_to_use-jing
 
ClusterDesktop how-to use from Android devices
ClusterDesktop how-to use from Android devicesClusterDesktop how-to use from Android devices
ClusterDesktop how-to use from Android devices
 
12 Composer #burningkeyboards
12 Composer #burningkeyboards12 Composer #burningkeyboards
12 Composer #burningkeyboards
 
Building (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with PackerBuilding (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with Packer
 
Installing and running Postfix within a docker container from the command line
Installing and running Postfix within a docker container from the command lineInstalling and running Postfix within a docker container from the command line
Installing and running Postfix within a docker container from the command line
 
Get the most out of your Mac OS X
Get the most out of your Mac OS XGet the most out of your Mac OS X
Get the most out of your Mac OS X
 
Your own minecraft server on a linode vps
Your own minecraft server on a linode vpsYour own minecraft server on a linode vps
Your own minecraft server on a linode vps
 
ClusterDesktop manual how-to use for Linux clients
ClusterDesktop manual how-to use for Linux clientsClusterDesktop manual how-to use for Linux clients
ClusterDesktop manual how-to use for Linux clients
 
Pp docker-swarm-doxlon-28th-march-2017
Pp docker-swarm-doxlon-28th-march-2017Pp docker-swarm-doxlon-28th-march-2017
Pp docker-swarm-doxlon-28th-march-2017
 
How to use UStream Producer
How to use UStream ProducerHow to use UStream Producer
How to use UStream Producer
 

Similar to Remote pairing from the comfort of your own shell

Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++
Minko3D
 
Introduction To Programming in GNU-LINUX
Introduction To Programming in GNU-LINUXIntroduction To Programming in GNU-LINUX
Introduction To Programming in GNU-LINUX
Irfan Ahmed
 
V Mwarev Storage Intregration
V Mwarev Storage IntregrationV Mwarev Storage Intregration
V Mwarev Storage Intregration
mikhail.mikheev
 

Similar to Remote pairing from the comfort of your own shell (20)

VM201 - IdoSphere
VM201 - IdoSphereVM201 - IdoSphere
VM201 - IdoSphere
 
Bauen und Verteilen von Multi-Arch Docker Images für Linux und Windows
Bauen und Verteilen von Multi-Arch Docker Images für Linux und WindowsBauen und Verteilen von Multi-Arch Docker Images für Linux und Windows
Bauen und Verteilen von Multi-Arch Docker Images für Linux und Windows
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and Symfony
 
Proxmox 4.2 usage in the Standards Interoperability PLM Project
Proxmox 4.2 usage in the Standards Interoperability PLM Project Proxmox 4.2 usage in the Standards Interoperability PLM Project
Proxmox 4.2 usage in the Standards Interoperability PLM Project
 
Apt get no more let Vagrant, Puppet and Docker take the stage
Apt get no more let Vagrant, Puppet and Docker take the stageApt get no more let Vagrant, Puppet and Docker take the stage
Apt get no more let Vagrant, Puppet and Docker take the stage
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
 
Aucklug slides - desktop tips and tricks
Aucklug slides - desktop tips and tricksAucklug slides - desktop tips and tricks
Aucklug slides - desktop tips and tricks
 
Telepathy Skykit
Telepathy SkykitTelepathy Skykit
Telepathy Skykit
 
Hopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to anotherHopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to another
 
Introduction To Programming in GNU-LINUX
Introduction To Programming in GNU-LINUXIntroduction To Programming in GNU-LINUX
Introduction To Programming in GNU-LINUX
 
Another Test
Another TestAnother Test
Another Test
 
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
 
Composer Panada Conference 2014 by Mulia Nasution
Composer Panada Conference 2014 by Mulia NasutionComposer Panada Conference 2014 by Mulia Nasution
Composer Panada Conference 2014 by Mulia Nasution
 
V Mwarev Storage Intregration
V Mwarev Storage IntregrationV Mwarev Storage Intregration
V Mwarev Storage Intregration
 
Docker in 30 minutes
Docker in 30 minutesDocker in 30 minutes
Docker in 30 minutes
 
Learn docker in 90 minutes
Learn docker in 90 minutesLearn docker in 90 minutes
Learn docker in 90 minutes
 
oVirt CI Package Managenent
oVirt CI Package ManagenentoVirt CI Package Managenent
oVirt CI Package Managenent
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4
 
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running Q...
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running Q...Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running Q...
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running Q...
 

Recently uploaded

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Recently uploaded (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 

Remote pairing from the comfort of your own shell

Editor's Notes

  1. Developer ~18 years Ruby Developer ~8 years Remote worker ~7 years
  2. I run Ruby DCamp A 3 day nerd commune in the woods, going on our 7th year Eventually, I’ll even update the website for this year 10/10-12
  3. I work for Rackspace as a Developer Advocate. I’m an ambassador between them and the Ruby community.
  4. And, for those of you who don’t know me, I am easily amused
  5. Time for a little geography lesson Currently, we are here
  6. For the past 6 years, I lived here: Ocean City, MD
  7. As you can see, Ocean City is an exciting place, full of culture and knowledge.
  8. There was even one whole other software developer.
  9. Kim and I moved to Ocean City to be near her mother Kim had Huntington’s Disease HD is neurological, systemic, progressive, and there is no cure
  10. She died October of last year But that’s another talk for another time
  11. I’m still getting better…
  12. But caring for my wife, as her health worsened, and working remotely while living in Ocean City was often lonely.
  13. What if I could work more closely with my remote colleagues and feel less alone and isolated?
  14. Because I couldn’t find a Star Trek transporter effect 😀
  15. A historical accounting Evolved as the pain of each became too annoying not to None of them are perfect
  16. Skype recently added screen sharing as a feature
  17. Advantage: EASY to setup! Disadvantage: Navigator could never drive!
  18. It. Felt. Awesome! A little clunky but awesome I could now discuss code over the internet in real time And don’t all programmers have a bit of Tony Stark in them? We hack. We experiment. We evolve.
  19. Crashy with a tendency to explode at times But a taste of true remote pairing!
  20. “Yeah, I can fly” Interaction! And stable! VNC is a huge bandwidth hog But not crashy!
  21. “terminal multiplexer” Multiple terminals via the same connection But more awesome: sessions can be shared across a socket
  22. Tmux’s CLI is a little obtuse wemux makes it better
  23. Handy for reference later when you’re reading the PDF
  24. Add SSH Create users and add their SSH keys tmux for sharing session and having multiple shells
  25. tmux runs in the terminal editor choices are limited: vim or emacs
  26. This felt powerful! But still not ideal
  27. Remote control the tmux shell from vim
  28. Still felt a bit clumsy I like to scroll and search my shell’s history Added a few commands to vimux for scrolling Sending search commands, through vimux, didn’t appear feasible
  29. This is how I felt after a few days of Conque
  30. … which finally led to…
  31. Not perfect but well on our way
  32. A pure Emacs LISP terminal Thanks, Avdi
  33. An 80% solution Sporadic indentation issues Some issues w/ ZSH and pry
  34. ISP probably doesn’t permit servers per EULA Better have your users, groups, and file permissions well in order as you will have many people crawling around in your box Besides, there’s no easy way to kick a logged in user off of your (likely) OSX box
  35. Frustration due to external dependencies of ISP and DynDNS
  36. Host is only used for remote pairing Less risk
  37. Easy to set up a local server Plugins make it easy to set up remote servers
  38. OMG Ruby code! Vagrantfile for my Rackspace Cloud pairing server Sets up my emacs and (yes, it’s old) Ruby 1.9.1
  39. Link to the repo for later Just an example You’d probably want to roll your own
  40. Create on demand in about 5 minutes or so
  41. This came a year late for me… 😭 80% solution Navigation between tmux and vim Doesn’t facilitate search and scrolling
  42. I scared myself when I was creating this slide After removing the other windows, I was left with Josh staring at me
  43. Disable video Disable A/V chat and use phone instead Just give up already, sheesh