My Setup

Sat, 29 Dec 2018

I am always intrigued to see others’ development setup and so I thought I would share mine. Installation instructions for the apps and tools I use, as well as how to keep preferences for those apps in sync are included. 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.

Machine & OS

Command Line

Homebrew

Homebrew is an indispensable command-line tool for installing packages and apps.

# 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

Firstly, the prompt. I use my own variation of Sindre Sorhus’s famous Pure prompt, which I’ve named Impure.

# Install Impure prompt
fisher add will-stone/impure

Next, some utility commands:

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

Terminal

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

# Install iTerm
brew cask install iterm2

Git, Node, and Ruby

I currently find I don’t have much need to version control my CLI tools so I just install them using brew.

# Install Git, upgrade node, and upgrade Ruby
brew install git node ruby
# Update Git's configuration
touch ~/.gitconfig
open -a TextEdit ~/.gitconfig

Then copy-paste my Git settings:

[user]
    name = Will Stone
    email = 654103+will-stone@users.noreply.github.com
[push]
    default = simple
[alias]
    a = add
    cm = commit -m
    s = status
    p = push

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 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
brew install yarn

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 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

More to come…

The background patterns on this page have been generated using the excellent Hero Patterns website.