In the last couple of years I have picked up and learnt about a bunch of different tools to work in the world of Cloud/DevOps/Programming and I thought it might be useful to share which of these tools I've found to stand tall and work well. I work solely on a MacBook Pro and iPad Pro (iPhone when really needed) so the apps below will be focused on these platforms but in some cases, there might be an equivalent for your platform of choice.
The sorts of tools I need are aimed at code development and shell access to Mac OS and Linux. I also occasionally require remote access to Windows machines.
I have pretty basic criteria for the tools I use which I believe make for a more enjoyable and efficient experience.
My requirements are:
- Simple to use
In this 2-part post, I will split these tools up between Desktop and Mobile. Starting with Desktop, here are some of the tools I use and what they do.
The built-in terminal app on Mac does the job but iTerm 2 is so much better. From easy shortcuts and simple navigation to being able to control loads of sessions at the same time, iTerm 2 is one of the first things I install on a Mac and customise to work my way.
Highlights of iTerm2
- Broadcast Input to Multiple sessions
- Great when you need to SSH to multiple machines at once to perform the same task. Very powerful but can also be dangerous. Proceed with caution.
- Hot-Key shortcut
- I have mine configured to
Cmd + ;. With the press of a couple of buttons, I can jump to iTerm from anywhere... Assuming it's open.
- Quick creation of new sessions
Cmd + Dand
Cmd + Shift + D
Sublime is worthy of its own article (maybe I'll do that). It is a fast, lightweight application that allows me to write code in a huge range of different languages. The power of Sublime is only really unleashed after you start adding new plugins to it. This is achieved through Package Control and gives you fast access to a massive range of community plugins. These include new themes, UI changes, Code linting and a bunch of other things.
Once you have Package Control installed, you can access it by pressing
Cmd⌘ + Shift⇧ + p, then type Install Package. Hitting enter then allows you to search for packages you want. Easy!
Here is some of my favourite add-ons
- There are Snippet plugins for loads of languages/DSLs that make code writing really fast. My favourite is the Chef resources snippets which make Cookbook recipe writing a breeze.
- Code linters
- Flake8 for Python, Rubocop for Ruby or Foodcritic for Chef. Lots of linters for lots of languages. It's always good to write nice code.
- Git Integration
!(https://puu.sh/tAY9P/ee9d959abf.png=100x"Git in Sublime")
- A great time saver. Quick access to Git and it has some nice branch switching features too.
- Pretty JSON
- JSON is great. However formatting it nicely can be a pain in the arse. PrettyJSON offers options to format your JSON files, the two most useful being expanding flattened JSON to have tabbing and new lines for objects and values and then minifying an expanded file for you for easy storage.
Everyone needs a good web browser. Being an Apple fanboy, I keep wanting to move to Safari but I keep coming back to Chrome for its speed, extensibility and customisation options. Themes are not of much interest to me here but add-ons offer new functionality to the browser and even provide 3rd party app support for some popular web/desktop services.
Chrome's worst feature is how damn power hungry it is. Each tab spawns a new memory-sucking process. I use a couple of add-ons to keep this at bay plus some other cool tools.
Taken from its Chrome Add-On description, put simply - Automatically suspends unused tabs to free up system resources.
This tool does a great job at keeping Chrome resource usage down. It suspends tabs you haven't used and when you go back to said tab, it refreshes the page and your back where you left off. It allows you to customise how it suspends and what it suspends based on some rules.
A little more dangerous, Tab Wrangler simply closes tabs you haven't used for a little while. I have this configured to only kick in if I have more than say 10 tabs open. Mixed with The Great Suspender, Tab Wrangler can help keep your Chrome usage clean and resource free(ish). Don't worry, if Tab Wrangler closes that Reddit post you were saving, you can easily re-open closed tabs through its toolbar button.
A great tool for performing HTTP/HTTPS requests. It allows you to build up a request as if you were a web user but allows you to see how a website reacts before coding up the result later. I use this a lot when interacting with API's as it is a quick and easy way to see what I should be getting back assuming my request is valid.
Not really an add-on as it is built into Chrome. This deserves a mention as it pretty powerful for what it does. This tool, as it is called, lets you inspect a web page. From looking at the page source to analysing its network usage when you load a page - Inspector is great for debugging your own websites and also playing with others. My favourite part here is the Network tab which lets you see the requests being made from a website. Great for reverse engineering an API or seeing how to build your own requests.
I used to try and avoid Markdown for some reason. Lately, I have come to discover the benefits of it and it's portability. I have found myself needing to use it more often. This might be for writing Git READMEs, Confluence articles or even these blog posts.
I discovered MacDown a little while ago and it's become my tool of choice for Markdown.
Whilst there is no extensibility options here or from what I know, much customisation options, MacDown's simplicity and speed make it my tool of choice for my Markdown needs.
My favourite feature about MacDown is the side-by-side comparison of your raw Markdown vs it's rendered state. This a) makes Markdown super easy to write as you have immediate feedback and b) It helps me learn and remember what I can or can't do with Markdown.
Although I don't use this as often as I'd like, GitKraken is a great tool to visualise what is going on in the world of Git. It has support for Bitbucket, GitHub and GitHub enterprise (when you pay for it).
There isn't much in terms of customisation/extensibility but I don't feel it needs it. More often than not I'll just use the command line but GitKraken is my go to tool for Conflict resolution and managing bigger repos with larger teams.
GitKraken used to be pretty sluggish but the latest update claims to be at least 2x faster than before - I'll need to put that to the test as I only updated 5 minutes ago (to take that screenshot). I would like some more support for command line access (i.e
gkarken . to open a repo from iTerm in GitKraken but I have figured out some shortcuts to achieve this where GitKraken falls short.
Not much to say here other than Jump is a great tool for RDP. It has some nice management features to make client creation easy and being able to group connections by tag is awesome. It even supports VNC.
A super simple app that gives you clipboard history! This is a life saver in the DevOps space when it comes to copying and pasting lots of things between apps/webpages etc. It supports image copying as well. Accessed through a short-cut, ClipMenu has quickly become my default tool for using as a clipboard.
That's it for now. What do you think about this selection of tools? Do you have a better alternative for one of the categories listed? If so - let me know! There are a few other tools I use that I didn't include in this article as it could go on forever but the tools I've mentioned here are my personal favourites however I am always up for suggestions of what else I could or should be trying.
Let me know what you think
Subscribe to Neil Stewart
Get the latest posts delivered right to your inbox