Beautiful Tools

We do this software development thing.

I don’t have to tell you at times, it’s a very trying process. You shouldn’t have to deal with tools that get in your way or make your experience any less pleasurable.

Okay. So you got the fancy chair. How about that little black box you type in everyday? Is it fully customized to your liking? What about your text editor?

These tools are things you use every single day. You look at them day in and day out hours at a time. You need to be in lovewith them. Take a moment to process that. Then tell me whether not you can’t justify taking a day to setup all your tools to the best of your liking.

Now that was a bit extreme but it was to get a clear point across. This. Is. Important. This won’t take a day, but I can’t promise that you won’t spend endless hours customizing every little detail of your setup.


Mike has written up a little post on the greatness of zsh, which highlights the reasons why you should give zsh a shot. One of the many reasons to switch is oh-my-zsh started by Robby Russell which is a

A community-driven framework for managing your zsh configuration. Includes 40+ optional plugins (rails, git, OSX, hub, capistrano, brew, ant, macports, etc), over 80 terminal themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.

Beyond all that it has extensive theme framework for creating beautiful terminal themes which are easy to customize and share.

So the prompt here is a current directory surrounded with square braces. Fully customized and to my liking.

Now another feature that is provided with oh-my-zsh is git repository detection which detects the repository branch as well as the current state of the repository which is represented with a red * (in my case).


curl -L | sh

I have quite minimalist terminal but you can find a lot more themes here shared by other oh-my-zsh users.


Wait a minute. There is more love for your terminal, and this time it comes in the form of tmux.


brew install tmux
sudo apt-get install tmux

tmux is a terminal multiplexer, which basically means it allows you to manage multiple terminal sessions in the same terminal window. It even has support for remote terminal sessions when you solving problems for your co-workers like a boss.

There was alot of stuff in that video, all awesome I know. Now you might be thinking I can script all the things into my tmux. But this does make things slow if you do too much in these scripts. Keep it simple stupid.

No one loves a slow terminal. No one. You can find my tmux.conf here.


What makes a good programming font?

  • Monospaced
  • Readable
  • You can tell the difference between O and 0.

These are all requirements of fonts I use while programming its important that you choose a good one. Always keep an eye out for something better.

Some people really enjoy having bold fonts as well, they just stand out better so you might want to make sure it comes with bold if you like that sort of thing.

Here are some fonts that I think are awesome and excellent for extended periods of time.

  • Menlo
  • Ubuntu-Mono
  • Terminus
  • Inconsolata


Hopefully, I was able to convince you that customizing your tools is a major win both in speed and happiness.

Don’t put up with crap tools. Demand more.

To those of you who think colors aren’t important I leave this little message.

Welcome to hell.

Colors are extremely important. They are useful for two specific reasons here.

First of which is providing contrast, it can be hard after an extended period of time pulling out useful information from a blob of monochrome text on the screen. Colors break the text up.

Secondly they provide meaning, red = bad; green = good; which are much easier to process when reading alot of information.

If you have any questions clickety-click click here on Twitter.


If you are looking to get more proficient with ZShell and general terminal scripting the following books provide a good starting point for beginners as well as people well versed in shell scripting.

Mahdi Yusuf

engineer, speaker, writer, and home labber.