/haskell-pair

Haskell pair programming server via Vagrant

Primary LanguageShell

Installation

on a local virtualbox

  1. Clone this repo
  2. Install Vagrant and VirtualBox
  3. vagrant up
  4. vagrant ssh

This will create a clean dev environment with the newest GHC and Cabal. It also includes haskell-vim-now, a vim configured to be a Haskell IDE.

on a public pair programming server

  1. Clone this repo
  2. Install Vagrant
  3. Sign up at DigitalOcean
  4. Fill out your DigitalOcean client ID and API key in Vagrantfile
  5. vagrant plugin install vagrant-digitalocean
  6. vagrant box add digital_ocean https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box
  7. vagrant up --provider=digital_ocean
  8. vagrant ssh

You'll be logged in to a newly created DigitalOcean "droplet."

ps: for some reason I had to create a ssh key with a password otherwise I could not get ssh access to the box

Included software

  1. Ubuntu 14.04
  2. New GHC via Stack
  3. haskell-vim-now
  4. SixArm git config
  5. Firewall, hardened OpenSSH, Fail2ban
  6. Oh My ZSH, Tmux/wemux

Pairing

To pair program with someone you can give them login access by running

pair github_name

They connect to your server by ssh-add'ing their Github SSH key and running ssh friend@[your-server-ip].

When you're done working with them, run

unpair

Tmux Keybindings

C-a |Split vertically
C-a _Split horizontally
C-hMove to leftward pane
C-lMove to rightward pane
C-jMove to downward pane
C-kMove to upward pane
C-a [Detach cursor to scroll (ENTER stops)
C-a cCreate new window
C-a [0-9]Switch to numbered window

SSH agent forwarding

To access your github repos on the pairing server while keeping your credentials safe on your lacal machine use agent forwarding.

Edit your local ~/.ssh/config file and add an entry for your pair server host.

Host [ip address]
  ForwardAgent yes

Before ssh'ing into the pairing server run

ssh-add ~/.ssh/[keyname]

and it will be available remotely. To test agent forwarding run this remotely

ssh -T git@github.com