OSX Development environment

As a front end engineer at Verve I’ve had to get used to working on a macbook – not exactly the linux-over-ssh development environment I’m used to. But OSX is still Unix, and it doesn’t take too much tweaking to make it very nice. Here’s my ad development setup:


First step is to pin the terminal to the dock, because I use it all the time.
Then I go into the terminal settings and add background transparency, because it looks cool as hell:

Now we want to set up a nice bash prompt. I like having a seperator to visually separate commands. I’d also like to have some useful information such as timestamp, current directory and git status on my prompt. All of this becomes a bit unwieldy to put in PS1, so I’m using PROMPT_COMMAND and a bash file at ~/.bash_prompt.
Here’s my ~/.profile:

export PROMPT_COMMAND='export PROMPT=$(~/.bash_prompt)'
yellow=$(tput setaf 3)
reset=$(tput sgr0)
export PS1="\$PROMPT\n\[$yellow\]\w)\[$reset\] ";

And here’s ~/.bash_prompt:

source ~/.git-prompt.sh

export GIT_PS1_SHOWUPSTREAM='verbose count name'

data=$(__git_ps1 '%s | ')$(date +"%r")

cols=$(tput cols);

s=$(printf "%*s" $cols);
export PROMPT_SEPERATOR=$(echo "${s// /―}");

echo -e "$(tput setaf 2)$PROMPT_SEPERATOR$(tput bold)$data$(tput sgr0)"

~/.git-prompt.sh is git-prompt.sh, a very useful helper script for putting git repo status in your prompt.

I combine it plus the date function to get the data variable, which looks something like: encode-task u= origin/encode-task | 02:50:09 PM. Then I subtract the length of that from the width of the terminal to get how many “filler” characters I need to build the seperator. Finally I use printf and some substitution magic to generate exactly enough dashes to fill the width of the terminal + the miscellaneous data.

Here’s what this ends up looking like:


Next step is to get XCode, which has build tools and most importantly comes with iOS Simulator, which is very useful for testing a variety of configurations of Safari for our ad builds.

I’m using Xcode-beta, (as of this writing, version 7.3) because I like experimental features. I launch iOS Simulator via right clicking on the Xcode dock icon, Open Developer Tool, Simulator. I then pin the iOS simulator to the dock in the same way I pinned Terminal so that I don’t need to launch XCode to open iOS simulator.

Homebrew is a package manager for OSX and is a lifesaver. I’ve used it to install node (brew install node) and cmake.

I use the Dev channel for Chrome, which has the best balance of stability to cool features. (There’s a lot of even cooler features in Canary, but it’s not stable enough for production use.)

Text editor

I’m a big Vim fan, especially because of the very large number of plugins and community configuration available for it. I use Macvim with YouCompleteMe, compiled with clang and tern support.