The tools for the technology

So a long time ago (even as far back as last year!) I used Microsoft Windows on my workstations exclusively. I still do have a windows machine, but mainly just for games - I have however moved over to Mac OSx for my work computer. As a result the tools I use have changed from Microsoft centric to more generic/cross-platform.

The main workstation I currently use - and will do for many years to come - is a MacBook Pro (15" with Retina - the screen is awesome!). I'll no doubt update the underlying hardware regardless of the expense as I've found it more than worth the cost. As a result I have moved away from my old favourite editor Notepad++ as it is Windows specific regardless that I have Parallels installed. Don't get me wrong - parallels is a great system, but it creates a lot of heat due to CPU usage, and I don't like hearing my laptop fans going ;)

I have three main software tools I use for automation work:

Sounds almost too simple right? The end result of course is a ton of applications are accessed from within each.

iTerm 2

iTerm 2 is probably the best terminal application out there. The ability to select multiline text (and not as a block - as a consecutive set of characters that can be across multiple lines that can also be different lengths per line) as well as easily start up new sub-sectioned consoles (or 'panes' as they call them) within the same 'tab' makes this one of the most powerful consoles out there. Add in the easy to use toggle for broadcasting commands into multiple sections within a tab and you have the ideal DevOps terminal.

For example, if I would like to tail a log happening across multiple machines, all I have to do is start up a set of console panes in the same tab and SSH to the machines in question. Then I can enable broadcast (command-shift-T in my configuration) and type the single command and have all consoles start outputting the log data:

tail -f /usr/someApp/someLog.log  

Obviously a simple example, but very easy to use and very powerful if you need to do something more powerful than just tail...

iTerm 2 also has the capability to automatically log the console locally. Ever needed to remember what command you used to do something a month or so ago and can't for the life of you find it again in a Google search? grep your output directory or even troll the logs manually if you wish - all good things (and bad!) are kept around for as long as you want them. This is especially useful if you need the output from a server that has since been decommissioned where that output would never make it to your logging solution otherwise.

Yes, there are many other features (command suggestions, paste history, etc), so if you haven't tried out iTerm2 already, I suggest you go do so now.

iTerm 2 of course gives me access to bash. Bash (on the Mac) gives me access to ssh. Which in turn gives me access to bash (on Linux), echo, tail, cat and vi, all of which I use extensively when I'm forced into looking at remote machines. I don't allow GUI's on the Linux servers as the overhead is totally unnecessary. Occasionally I use openssl as well on my local machine, which then usually ends up with echo and/or vi as copy/paste from iTerm is just awesome and pretty much eliminates the need for a GUI text editor for simple text manipulation.

Atom

Atom is one of the best 'free' editors out there that works across platforms. It's one of the best text editors out there regardless of platform :)

I regularly open up a directory in an Atom window (the concept of a project space) and when combined with that directory being a local (or synced) git repo, can see what I've changed easily due to the core 'git-diff' module Atom comes with. I work almost exclusively with git repo based text files of course, so like other git-synced editors benefit a lot from knowing what is going on within a file.

Being a highly customisable editor, you can theme the look and feel of the editor in many, many ways. I'm partial to light text on a dark background (iTerm is green on black of course!), and working the way you want to work is important in my opinion.

Atom is also a really good markdown editor once you add in a couple of markdown specific plugins. Combine that with a spell-check facility and it won't be surprising to know that this is how I write these blog posts. On a side note, Ghost (my current blog platform) doesn't have a spell-check.

Google Chrome

Google Chrome is possibly the most work-centric browser out there. In my opinion it has the best set of tools for debugging websites, and combined with the ability to have multiple 'people' windows means I can switch between sets of accounts (home and work for example) and both easily see which main account I'm working as, but also keep a good level of separation between sets of accounts.

If you haven't come across the 'People' concept, open up Chrome settings and scroll down while in the 'settings' view until you find it - you may need to enable it to get it to show, but once you do, you will have a person name showing at the top-right corner of every Chrome browser window.

If like me you have multiple Amazon accounts being accessed constantly during the day (everybody has a home, dev and production account right?) then being able to tell easily which account you are in while you are working is paramount.

Google Chrome is where I get to use the AWS console (outside of iTerm 2 and the AAWS CLI of course!), GitHub (outside of git commands or the GitHub GUI client), Google Apps for mail and calendar, Rundeck, Pivotal for project management, and possibly most importantly, Google Search. I'm also quite partial to sending people lmgtfy.com/ links as well of course :)

Well, enough text about tools, even if in the end there are only three actual pieces of software in that list. Next I'll be talking about the process for creating the first automation server, which no doubt will lead us directly into the AWS console...