Getting comfortable with console toolset
I have worked in the past with C++ applications that could not be built on my local machine. For these apps writing, compilation and running of code was generally done by logging into a dedicated development machine using something like putty.
I have therefore spent a fair amount of time working via the command line. What I have realised in the last few days is that I have never spent any time practicing in the command line.
I can recall watching in awe as a former colleague jumped around console windows issuing commands like a wizard to quickly perform tasks that would have taken much longer for me. It is one of those skills that I always meant to develop but always seemed to take a back seat to other work. One of the key attractions of an apprenticeship for me was the emphasis on conscious practice, whether that is of coding techniques or use of tools.
With that in mind I have been performing all of my coding this week using vim and command line tools. I still have to keep reminding myself to take the time to lookup a better way of doing something rather than rushing to complete the current task but I think it is starting to pay off.
My typical work setup at the moment looks something like this:

I am using tmux for handling multiple applications in the same terminal and managing sessions. The top pane here is vim with the bottom pane auto-running ruby specs when the relevant file changes using a Rake task to start watchr.
Update: I have switched from watchr to guard-rspec after writing this post as it seems to be better supported and handles things like file addition
Some links I have found handy on the way:
- An introduction to tmux for window/pane management
- Template ruby kata repo demonstrating auto running tests
- vim-endwise a vim plugin for automatically adding end where appropriate when writing ruby
- StackOverflow :) for lots of vim tips