25 awesome tools every developer should haveWorkflow

25 awesome tools every developer should have

November 13, 2013

This is a repost of my original post on X-Team blog. I'm putting it here for consistency.

Most developers have a list somewhere (sometimes just in their heads) of favorite applications they use every day. In X-Team, every hero has his own list as well, and I'd like to share with you the most common tools on those lists.

iTerm

iTerm

Like it or not, terminal is the most important developer tool. It makes doing a lot of tasks way easier and faster than GUI. As somebody said: "GUI makes easy tasks trivial, and hard tasks impossible to make." So learn to love your terminal, and it'll thank you later.

homebrew

homebrew

A package manager for OSX. Think of it as apt-get for Mac. It was written by the guys who had enough of MacPorts and decided to do it better. And they did - brew shines everywhere where MacPorts fails, starting from logical directory structure, through simple packaging system (everything is git based) to great simplicity of the tool itself.

oh-my-zsh

oh-my-zsh

A very nice addition to zsh shell - it comes bundled with a ton of helpful functions, helpers, plugins and themes. Want to see your current git branch in your shell prompt? You got it. RVM version? No problem. Weather? You bet. And still, it has ZShell under it, so it comes along with a nice path completion, history browsing and ton of other stuff.

ack

ack

This is how grep would look like if it was created 20 years later; a great, blazing fast tool for finding contents of the file. And it is written with developers in mind, which means (for example), you can narrow results of the search only to the source files of the language you prefer. Or ignore VCS files. Or use regular expressions out of the box. This is a find-in-file Swiss Army Knife.

rvm

rvm

A tool no Ruby developer can live without. RVM is a command-line gadget which allows you to easily install, manage, and work with multiple Ruby environments from interpreters to sets of gems. Recently, Ruby experienced a thing called "fragmentation hell." There are two major versions of it, two major versions of its biggest framework (Hey! Rails! I'm talking about you!), and a lot of concurrent gems. RVM helps you to catch up with all of that, and manage Ruby/Rails projects more efficiently.

Grunt

Grunt

This is a tool that our front-end guys love. It's a JavaScript task runner. It takes all the repeatable tasks off your shoulders. Thanks to its huge plugins database, it can minify CSS/JS files, compress images, compile LESS/SASS scripts, lint your source and even set a live-preview server for you. All in an easy-to-use JavaScript environment.

Alfred 2

Alfred 2

Alfred is a task launcher, designed to find files and operate on them quickly and easily. The application itself doesn't differ much from Spotlight, and careful reader may ask, what is the advantage of it.

That's where Powerpack kicks in. It enables things called "workflows." And workflows are huge advantage - think of them as Alfred on steroids. They are community written extensions which allows the base app to do almost everything. And there are hundreds of them. Below is the short list of the ones we are using in X-Team.

Can I Use...

Can I Use...

Full caniuse.com database under your fingertips. No extra browsing needed.

Colors

Colors

Great tool for front-end developers. It converts colors between RGB, HSL and hexadecimal format. But the true power is the integration with color picker. By simply typing # it allows you to choose any pixel from your desktop, and then Colors will automatically return hex/rgb/hsl values for it, ready to be copied or pasted.

Dash

Dash

Allows you to browse Dash docsets database way faster. More about Dash, below.

Data URI Scheme

Data URI Scheme

Another front-end dev tool. It can convert any given file to its representation in base64 data uri scheme. And for image and vector files it also does compression on the fly.

Flush DNS cache

Flush DNS cache

Mac OS X can be very stubborn sometimes when it comes to adding new entries to /etc/hosts. This little extension is an excellent solution.

HTML Entity Lookup

HTML Entity Lookup

Alfred version of Remy's Sharp excellent tool - it allows the user to quickly find the entity based on how it looks.

iOS Simulator Kit

iOS Simulator Kit

For some reason, Alfred and Spotlight search results don't include iOS Simulator application in their results. With this workflow - it's not an issue anymore. Also, you can choose with device you wish to emulate from the very beginning.

Strip clipboard

Strip clipboard

This is one of the tools, that when installed - you can't live without them. It strips all the formatting from the clipboard content, leaving only raw text inside.

Source Tree

Source Tree

As the name suggests - it's a workflow for SourceTree application. It lists all the repositories and allows you to view them in Source Tree or in Finder.

TimeZones

TimeZones

X-Team is spread around the globe. Most of the projects are handled simultaneously by developers from different timezones. This extension is a great tool to check if someone on the team is awake yet :)

VirtualBox Control

VirtualBox Control

Very useful extension for a QA team. They usually have a few VMs configured (mostly for IE8, IE9 and IE10) - and with this extension they can manage them faster.

Sublime Text 2 (or 3)

Sublime Text

This is the editor of choice for most X-Team developers, and for a lot of other people too. It is not language-oriented, like most of the IDEs, but it's irreplaceable when it comes to using multiple syntaxes.

And since most of web developers constantly switch between HTML, CSS, JavaScript and PHP/Ruby - Sublime shines. Oh! And it's written in Python so it's blazing fast (yes, Java, I'm talking to you...). But the real power of ST are the plugins - they are for almost everything, so if you invest some time at the beginning - you will end with the editor tailored exactly for your needs. And that's a field, where no other editor (except of vim and emacs of course) can compete. Here is an excerpt of the long list of plugins, which X-devs use:

... and many more.

Dash

Dash

A very nice tool which can be a lifesaver on a plane, bus or any place where you want to work that has no Internet available. It's an offline documentation database. Simply download docsets you need, and you're good to go. Integrates nicely with Alfred and Sublime Text, as mentioned earlier.

Divvy

Divvy

A simple click and drag window manager. Very useful on iMacs, which have a huge working space and you can confortably work with many windows on one desktop. It is also a very simple application, which does exactly what it's designed for very well - aligning windows, and assigning shortcuts for them.

FontPrep

FontPrep

Drag your font into it, click export and you will end up with your font converted to four of the most used formats on the web (otf, ttf, woff and eot) and a CSS file with @font-face directives. Beautiful.

ImageOptim

ImageOptim

Image files generated by graphics programs (such as Photoshop or GIMP), can be huge. The reason is that they add alot of unnecessary data and they handle color and alpha management poorly.

ImageOptim is a solution for that - it comes bundled with many image-optimization tools (like pngcrush for PNG or jpegtran for JPG), compresses an image with each of them, and returns the best result. It saves 30-40% of image space on average - which is a huge improvement, especially today, for graphically overloaded sites.

Marked

Marked

MarkDown documents viewer. Great, when you need to edit a *.md file in your favorite editor (for example Sublime Text, with which it integrates smoothly) and see the live preview.

SourceTree

SourceTree

There are to ways of using git. Conservatives use terminal. New-age programmers use GUI tools. And the most popular GUI for git in our company is SourceTree.

Why? It's free and it supports gpg commits signing, which is vital in our environment. It also has what all good, modern VCS GUI should have, like branch view, diff view, git flow and interactive rebase.

Wrap-up

While it is intelligent to choose multiple tools for speeding up the development process, it's essential for you to avoid embracing all of them. The act will not only burden your system, but also create confusion and you may discover not using most of them.

If you've got better tools, please share them with us! Also do share with us your secret tips on organizing your development more efficiently.