Setting up your Mac

How to properly configure your OS X development environment.

Pre-requisites

This section provides a short guide to installing some of the most valuable tools that we use.

Command Line Tools

Before you do anything else, check that you have Xcode and the Command Line Tools installed. Install Xcode, then Preferences > Downloads > Components and download Command Line Tools.

Strong SSH key

We use SSH heavily so please generate a strong key to reinforce security.

$ ssh-keygen -b 4096 -t rsa

You'll want to set a nice strong passphrase.

Add permanently to your SSH agent.

$ ssh-add -K ~/.ssh/id_rsa

Thus, if you have to use SSH forward agent it will be easier.

$ pbcopy < ~/.ssh/id_rsa.pub

Then copy and add your pub key wherever it is required (ie. Stash repository).

Homebrew

What is better than a cold beer? So let us offer you the freshest beer you can permanently have available on your laptop: Homebrew.

Homebrew installs packages to their own directory and then symlinks their files into /usr/local. It's all Git and Ruby underneath, so hack away with the knowledge that you can easily revert your modifications and merge upstream updates.

Follow the instructions in our developer machines repository to install the basic dependencies. Our magic recipe contains:

bash-completion
caskroom/cask/brew-cask
git
libyaml
openssl
rbenv
rbenv-default-gems
rbenv-gem-rehash
rbenv-readline
readline
ruby-build

Git

Make sure you tell Git who you are:

git config --global user.email "your.name@wearefriday.com"
git config --global user.name "Your Name"

If you enjoy the command line we'd recommend setting up some awesome aliases.

EditorConfig

EditorConfig helps us to define and maintain consistent coding styles between different editors and IDEs.

We are using these simple settings:

# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true

# 2 space indentation
[*.rb]
indent_style = space
indent_size = 2

# Tab indentation (no size specified)
[*.js]
indent_style = space
indent_size = 2

# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2

# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

When opening a file, EditorConfig plugins look for a file named .editorconfig in the directory of the opened file and in every parent directory. A search for .editorconfig files will stop if the root filepath is reached or an EditorConfig file with root=true is found. Please verify that EditorConfig is properly install in your IDE/Editor.

Text editor

You almost certainly have a favourite editor, so we're not going to ask that switch to something else! We have Sublime, Vim and RubyMine users… there's probably even someone clinging on to TextMate.

Make sure you spend time getting set up in your editor so you can be as productive as possible. Install those plugins that you can't live without. Rebind those important key commands. Get comfy.

We try and make use of various linting tools including SCSS lint, JSHint and JSCS. It would be good if your editor can handle integration with those sorts of linting tools.

Other apps

As an engineer you will have full admin access to your machine. This means you can install whatever you need to get your job done. However, please don't use Dropbox (or similar tools) for storing anything that is related to our clients.