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...
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.
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.
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
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.
OK, it's written in Perl, so technically follows on from three. However,
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
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):