This post should be sub headed "...for getting stuff done". Because there are dozens, if not more, tools that I couldn't be without. But these five are either used by me every day, else form the base for many other tools that I wouldn't want to be without.

So in time honoured tradition, a countdown, from number five...

Five: RVM

Ruby is my least favourite scripting language - for a variety of reasons. Every time I try Ruby, I actually find it really easy, and my dislike of it might pass with time as I use it more. However, I still find that the online (and I don't mean online in the sense of http) documentation is weak compared to both Perl and Python. perldoc is fantastic, and Python gets close with help() within the interpreter. None the less, for maintaining consistent Ruby across OS X (my desktop) and Linux (the server OS I almost exclusively work with these days) RVM is a godsend. It also makes it a doddle to look after gems, and 'gemsets' can be really handy at times. The system-wide install is simple, and works a treat too. There are various tools that I use which are written in Ruby too (not least Octopress, which I use for writing this blog). Don't use Ruby without it, I say.

Four: pyenv

Another language specific method of getting away from the OS supplied version. If I had to pick one of the newer 'trendy' languages it would be Python. Great documentation, easy access to it via the locally installed interpreter, easy to read code layout, and plenty of third party modules out there that mean you don't have to re-invent the wheel. I'm unsure about a system-wide install of pyenv though, which may be an issue for large scale use of it. For the same reasons as RVM though, this is a staple tool none of my systems are without.

Three: Perlbrew

Perl is my favourite scripting/glue language. It's 25 years old, and that means it's got experience. Yes, people complain Perl code looks awful, but that's because they're writing it like that. Follow Damian Conway's Perl Best Practices guidelines, and your code will be as readable as anything Python forces on you. CPAN has almost everything you could ever want, which means you rarely have to write something complex from scratch. Perlbrew gives great management of Perl versions, can cope with a system-wide install, and permits great local::lib management, builtin, with perlbrew lib. I wouldn't be without perlbrew.

Two: Ack

OK, it's written in Perl, so technically follows on from three. However, I've written find . -type f | grep <SOMETHING> so many times in the past this is such an important tool to me I wouldn't want to be without it. It just makes finding stuff in code so easy. Plus, it nicely integrates with my number one tool...

One: Vim

Whilst talking to a colleague the other day (about something funky I was doing in Vim) he commented about how well I know the editor. There's good reason for that - I've been using it every day for something like the last 15 years. I could write another 'top five' post about my favourite Vim plugins it's that important to my daily workflow. I write this blog in MacVim and basically 'live in' MacVim all day, every day. I'll drag scripts from other systems via Nread over scp, I have all code checked, automatically, by Syntastic and I frequently have multiple tabs/splits and windows open. If I had to choose just one tool from these five, that I couldn't be without, it would be Vim.

I could so easily have made this a top ten. Or a top twenty! But I had to boil things down to this. Building on these foundations, here a few other tools that I use frequently (in no preferential order):


comments powered by Disqus