My computer is my 'meta' workspace. It mimics my desk in some ways; cluttered in some areas and well organized in others. So settling in to my configuration has taken time. I use my computer for family photos, code, writing and the occasional video. For the benefits of folks wandering in and my future self, I decided to share my Mac setup. The post is broken up into how I write and how I code.
Before we begin, I spend most of my time in
iTerm. My setup is driven by tools to help me stay in the terminal prompt for as much as possible, but not exclusively.
There are times when this is not possible, and for those times (like during design sessions or working on client side apps) I
command-tab my way around.
nvAlt, a fork of 'Notational Velocity', and sync my notes with
SimpleNote. I needed markdown support. For that, install
Multi Markdown for Mac. I use tags
<Command> + <Shift> T extensively and find the search to be both speedy and accurate.
On crafting code...
I have two tools I use extensively to stay organized. The first is Homebrew.
Homebrew is my package manager (if you are coming from linux it is the Mac answer to
My next tool is tmux. Think of it as a session manager for your terminal (at least to start). Working on multiple projects, with multiple windows could not be any easier with
tmux. You can grab it with
brew install tmux tmux reattach-to-user-namespace.
Once it is installed on your machine you can grab vim using the ubiquitous
brew install vim command.
Vundle is plugin manager, which is similar to
Bundler but for vim scripts. My current favorite color scheme is
Code completion is important. Vim has out of the box code completion and I extend that using
ctags. It can be yours by typing
brew install ctags. Once that is setup you will likely want to create a ctags in your home folder, or wherever. Follow along the documentation or check out the
ctags example in my dotfiles.
I run for the code, the docs, then Google when I need some clarity. For the Ruby reader, I strongly recommend looking at two gems
qwandry. Once it is all set up you can do cool things like
qw pstore and gain access to the docs for any code from the standard library (In this case
pstore). If you are using bundler, I strongly recommend looking at the Ruby Gems extension gemedit. It provides the
gem edit command, which allows you to go to the source of your favorite library by simply typing
gem edit gemname, where the gemname is equal to the value used in RubyGems. So
gem edit activerecord opens up the ActiveRecord source in your $EDITOR.
On staying connected...
When I write code I prefer to stay focused on the terminal. The tools I use to keep this focus outside of the ones above are mutt, tig and on occassion irssi.
I use mutt to check my email. Mutt is a really nice tool to read and respond to email your terminal-get it with
brew install mutt. Next up is
Tig is a git client that is extendable in my terminal. It takes some configuration but if you are seeking a handsfree visual git client this might be good for you-get it with
brew install tig. When I am not in the terminal and want something more visual I run to GitX(L). It was introduced to me by a colleague and I have not regretted it.
Next up is irssi. This is a chat client that connects to IRC and XMPP clients (via bitlbee). Get up and running using
brew install irssi bitlbee. The documentation was not a great help to me and there are very, very few articles dedicated to setting this up. I honestly don't have a setup I find comparable to
Colloquy for IRC and just about anything else for chatting via Gmail. That said I am interested in getting it together. I recommend this article to get as far as I did.
Outside of that, music to my ears is courtesy of Rdio through whatever pair of Sennheiser headphones are nearby.
I keep my vim and Mac setup together generally with
Rakefiles. This helps me when I move from machine to machine but would like to keep the same setup across each.