Will Stone
Will Stone

My setup

I am always intrigued to see others' development setup and so I thought I would share the installation instructions for the apps and tools I use, as well as how to keep preferences for those apps in sync. This is mainly for my own benefit, when I reinstall my OS or get a new machine, but hopefully you may find it useful too.

Table of Contents

Machine & OS

  • macOS 10.15 Catalina
  • 15" 2015 Retina MacBook Pro
  • 2.2 GHz Intel Core i7
  • 16 GB 1600 MHz DDR3
  • Intel Iris Pro 1536 MB

Command Line

I install all of my CLI tools using Homebrew.

# Install brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Make sure brew's package list is up-to-date
brew update

Shell

My favourite shell is fish; the friendly interactive shell. I used to be a Zsh fan. Alas, by the time you have added all the plugins required to make it useful, it really starts to feel sluggish. Fish works really well out-of-the-box.

# Install fish
brew install fish
# Add fish to your list of available shells
echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
# Make fish the default shell
chsh -s /usr/local/bin/fish
# Restart the terminal to load fish shell

Whilst useful by default, I have a couple of tweaks I like to add to fish. These can be installed using the Fisher package manager.

# Install Fisher
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

They include a custom prompt and some utility commands:

# Install prompt, c, ls, and v
fisher add will-stone/fish-functions

Lastly, some abbreviations (think text expanders) help with commands I run most often. Add these by using fish's GUI: fish_config

abbr -a -U -- cl clear
abbr -a -U -- d docker
abbr -a -U -- dcd 'docker-compose down'
abbr -a -U -- dcu 'docker-compose up'
abbr -a -U -- g git
abbr -a -U -- gfm 'git fetch origin master:master'
abbr -a -U -- gfp 'git fetch -p'
abbr -a -U -- gmm 'git merge master'
abbr -a -U -- gp 'git push'
abbr -a -U -- gpl 'git pull'
abbr -a -U -- grb 'git removed-branches --prune'
abbr -a -U -- gs 'git status'
abbr -a -U -- y yarn

Terminal

My favourite terminal is iTerm2, and I keep my settings for this synced using Dropbox.

# Install iTerm
brew cask install iterm2

Node

I sometimes find I need to change Node version, therefore I've started using nvm for easy switching of versions.

# Install nvm
fisher add jorgebucaran/fish-nvm
# Install latest node release
nvm use latest

Git and Ruby

Grab the latest version of Git and Ruby.

# Install Git, and upgrade Ruby
brew install git ruby

Git Removed Branches

I like to keep my local repos tidy. This will remove any branches that have been merged with master.

# Install package
npm i -g git-removed-branches
# Remove branches
git removed-branches --prune

Trash

Another really useful tool is trash. I am not a fan of typing rm -rf to remove files and folders because it's so destructive. This allows you to move items to the trash bin instead.

# Install trash tool
brew install trash

Yarn

Whilst NPM has really come on these days, I still prefer the speed and aesthetics of Yarn's output.

# Install Yarn
curl -o- -L https://yarnpkg.com/install.sh | bash

Nano

I've looked into learning Vim but I just don't think it's going to improve my life; I very rarely need to use a terminal editor. For the times that I do get kicked into an editor, I just go for Nano. It's simple and included in most environments. I also like that it shows instructions for the commonly used shortcuts at the bottom.

# Install up-to-date Nano
brew install nano
# Set Nano as default terminal editor
set -Ux EDITOR nano

Cask Apps

Brew's casks are for GUI apps. Here's mine.

# Install GUI apps
brew cask install \
    alfred \
    appcleaner \
    bettertouchtool \
    dropbox \
    firefox \
    google-chrome \
    istat-menus \
    spotify \
    telegram-desktop \
    visual-studio-code

Alfred

Spotlight is a great system-searcher and app-launcher but damn is it slow! And how do I know it's slow? Well, try Alfred and you'll see what I mean. Alfred is a free alternative but buy the Mega Supporter upgrade to get all of the new app upgrades for life. It's the best app you'll ever buy. Alfred can do much more than search your Mac. One of my favourite features is "Snippets". These allow you to define your own text expansions. I primarily use them for email addresses and for quickly inserting chunks of lorem ipsum. The settings can be synced to Dropbox.

AppCleaner

Macs make it easy to uninstall apps by going to the Applications folder and dragging them to the trash bin. However, they pretty much always leave some traces of themselves behind. AppCleaner finds those remnants and allows you to select them for removal too.

BetterTouchTool

I use a Logitech Performance MX mouse and I've found the software that Logitech provide to be inconsistent and buggy. BetterTouchTool allows me to program the mouse's buttons. It also helps me program my mechanical keyboard (a Varmilo VA68M ISO). I store the settings in Dropbox.

Dropbox

This cloud storage service doesn't require much introduction. Privacy concerns aside, I find Dropbox just works and it's a great backup tool.

Firefox / Google Chrome

My browser of choice is Firefox, and the dev tools have gotten much better over the years. I also really like Mozilla's ethos. Chrome's a great browser but I mainly just have it installed now for testing, seeing as it's the most widely used browser. Firefox and Chrome both have great built-in synchronisation services; backing-up settings, history, add-ons etc.

iStat Menus

I like to keep an eye on my system's vitals; CPU, RAM, temperature etc. iStat Menus shows all this information in the menubar. I keep the settings backed-up to Dropbox.

Miscellaneous

Fix the dock

I like to set my dock to automatically hide. However, I've found there's a slight delay when moving the mouse to the bottom of the screen and the dock showing. It's a small delay but noticeable; this command makes the dock show immediately.

# Set dock autohide delay to 0s
defaults write com.apple.dock autohide-delay -int 0 && \
defaults write com.apple.dock autohide-time-modifier -float 1.0 && \
killall Dock

Fonts

Finding your coding font can take a long time, and to be honest, you'll always want to try new ones. I use Homebrew to install mine. My current favourite is Hack.

# Add the repository of fonts
brew tap caskroom/fonts
# Install Hack font
brew cask install font-hack