A Productivity Enhancing Perl Environment 
        
                    
    
    
                     London -- 30th November 2013 
                     Paul Johnson 
                     @pjcjohnson 
                    
                     www.pjcj.net 
                
     
                
    
         Introduction 
        
    
    
    
    
    
    
        
            
                -  This is what works for me 
 
            
        
            
                -  Some of it might work for you 
 
            
        
            
                -  Assumptions 
 
            
        
            
                
    
    
        
            
                -  You are writing (a lot of) code 
 
            
        
            
                -  You have control over your environment 
 
            
        
    
            
        
    
     
    
         Environment - Desk 
        
    
    
    
    
    
    
        
            
                -  L shaped desk 
 
            
        
            
                -  Comfortable chair 
 
            
        
            
                
    
    
            
        
    
     
    
         Environment - Monitors 
        
    
    
    
    
    
    
     
    
         Environment - Keyboard 
        
    
    
    
    
    
    
        
            
                -  Decent Keyboard 
 
            
        
            
                
    
    
        
            
                -  Logitech G15 keyboard 
 
            
        
            
                -  Comfortable 
 
            
        
            
                -  Programmable keys 
 
            
        
            
                -  Multimedia keys 
 
            
        
            
                -  Backlit 
 
            
        
            
                -  Ins Home Del End 
 
            
        
    
            
        
    
     
    
         Environment - Mouse 
        
    
    
    
    
    
    
        
            
                -  Decent mouse 
 
            
        
            
                
    
    
        
            
                -  Logitech MX1000 Laser Cordless Mouse 
 
            
        
    
            
        
    
     
    
         Environment - Speakers 
        
    
    
    
    
    
    
     
    
         Environment - Headphones 
        
    
    
    
    
    
    
        
            
                -  Or good headphones 
 
            
        
            
                
    
    
            
        
            
                -  Sound good 
 
            
        
            
                -  Don't leak sound 
 
            
        
            
                -  Comfortable 
 
            
        
    
     
    
         Hardware 
        
    
    
    
    
    
    
     
    
         Operating System 
        
    
    
    
    
    
    
        
            
                -  Work in a Virtual Machine 
 
            
        
            
                
    
    
        
            
                -  Why 
 
            
        
            
                
    
    
        
            
                -  Abstracts you away from the hardware and OS 
 
            
        
            
                -  Easy to snapshot and roll back 
 
            
        
            
                -  Easy to copy to another host 
 
            
        
            
                -  Easy to set up - script / copy and paste instructions 
 
            
        
    
            
        
            
                
    
    
            
        
    
            
        
            
                -  Host 
 
            
        
            
                
    
    
            
        
            
                -  Client 
 
            
        
            
                
    
    
            
        
    
     
    
         Window Manager 
        
    
    
    
    
    
    
     
    
         Terminal Emulator 
        
    
    
    
    
    
    
     
    
         Terminal Multiplexer 
        
    
    
    
    
    
    
        
            
                -  tmux 
 
            
        
            
                
    
    
        
            
                -  powerline 
 
            
        
            
                
    
    
        
            
                -  https://github.com/Lokaltog/powerline 
 
            
        
    
            
        
            
                -  tmuxinator 
 
            
        
            
                
    
    
        
            
                -  https://github.com/aziz/tmuxinator 
 
            
        
    
            
        
    
            
        
            
                -  screen 
 
            
        
    
     
    
         Shell 
        
    
    
    
    
    
    
     
    
         Font 
        
    
    
    
    
    
    
        
            
                -  Monospace programming font 
 
            
        
            
                -  Inconsolata 
 
            
        
            
                
    
    
        
            
                -  http://www.levien.com/type/myfonts/inconsolata.html 
 
            
        
    
            
        
            
                -  http://hivelogic.com/articles/top-10-programming-fonts 
 
            
        
    
     
    
         Colour Scheme 
        
    
    
    
    
    
    
        
            
                -  Solarized dark 
 
            
        
            
                
    
    
        
            
                -  http://ethanschoonover.com/solarized 
 
            
        
    
            
        
            
                -  f.lux 
 
            
        
            
                
    
    
        
            
                -  adjusts colour temperature based on time and location 
 
            
        
            
                -  reduces eye strain and helps you sleep more easily 
 
            
        
    
            
        
    
     
    
         Source code control 
        
    
    
    
    
    
    
     
    
         Editor 
        
    
    
    
    
    
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
        
            
                -  Fugitive 
 
            
        
            
                
    
    
            
        
            
                -  gitgutter 
 
            
        
            
                
    
    
        
            
                -  shows changed line in gutter 
 
            
        
    
            
        
            
                -  signature 
 
            
        
            
                
    
    
            
        
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
        
            
                -  tagbar 
 
            
        
            
                
    
    
        
            
                -  display tags in a sidebar 
 
            
        
    
            
        
            
                -  NERD_commenter 
 
            
        
            
                
    
    
        
            
                -  add and remove comments in various languages 
 
            
        
    
            
        
            
                -  NERD_tree 
 
            
        
            
                
    
    
            
        
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
        
            
                -  snipMate 
 
            
        
            
                
    
    
            
        
            
                -  surround 
 
            
        
            
                
    
    
        
            
                -  treat text surrounded by delimiters as an object 
 
            
        
    
            
        
            
                -  gundo 
 
            
        
            
                
    
    
            
        
    
     
    
         Vim - Plugins 
        
    
    
    
    
    
    
        
            
                -  devel-cover 
 
            
        
            
                
    
    
        
            
                -  show coverage information in gutter 
 
            
        
    
            
        
    
     
    
         Connections 
        
    
    
    
    
    
    
        
            
                -  ssh 
 
            
        
            
                
    
    
            
        
            
                -  mosh 
 
            
        
            
                
    
    
            
        
            
                -  Putty 
 
            
        
            
                
    
    
        
            
                -  Windows machines 
 
            
        
            
                -  registry / Filesystem 
 
            
        
    
            
        
    
     
    
         Communications 
        
    
    
    
    
    
    
     
    
         Conclusions 
        
    
    
    
    
    
    
        
            
                -  Be more productive and enjoy developing more by customising your environment