My setup

An overview of my hardware and software setup

First published: . Updated:

I'm a bit of a pedant when it comes to the gear that I use everyday. I like to use good quality things that make my life easier.

I change aspects of my setup fairly often so this page will serve as a living document and a place to point curious developers to when I get asked.


MacBook Pro ๐Ÿ’ป

I have the 2017 13" model (without the touch bar). It is amazingly lightweight, the battery lasts for ages and is a brilliant machine. Now that I use it as my primary work device, it is put under more strain, but it still handles everything I throw at it with ease.

WhiteFox mechanical keyboard

This is my latest mechanical keyboard, it is very small and pretty cool. I love the fact that it can easily be configured so the keys can be changed exactly to my preferences.

Code mechanical keyboard

This was my first foray into mechanical keyboards. It is a fairly straightforward tenkeyless keyboard and a real workhorse. I added the Royal Navy keycap set to personalise it a bit more.

Anker Wireless Vertical Ergonomic Optical Mouse ๐Ÿญ

This is my current mouse. It was recommended to me by a colleague and I can't recommend it highly enough. It is great for easing the stress on my wrist. It's also ยฃ14 so it's a steal. I also use the SensibleSideButtons app to enable the back/forward buttons with this mouse; there are plenty of other apps that can configure buttons to do all kinds of crazy things, but this app has everything that I need.

Logitech MX Master ๐Ÿ–ฑ๏ธ

This was the mouse I used before the Anker mouse. I use it again from time to time. It is great.

Apple Magic trackpad

I use this for when I need better multi-touch support, like when navigating artboards in Sketch, Figma or zooming into pdfs.


Alfred ๐Ÿ’ช

I use Alfred in nearly every aspect of my work. I use it for searching the net with its custom web searches (e.g. npm, JIRA, bundlephobia, MDN and many more); looking up obscure programming information with the Dash workflow; searching npm with the npms workflow and loads more. It truly is a massive productivity booster.

VS Code ๐Ÿ‘จโ€๐Ÿ’ป

Having been a long time Sublime Text user, I made the switch to VS Code last year and haven't looked back.

My settings can be found here and a list of my installed extensions can be found here. I also synchronise my settings to a GitHub gist.

1Password ๐Ÿ”’

I never need to worry about passwords anymore. It integrates with my browser (via their extension) and the Mac app automatically copies one-time passwords to the clipboard so I don't even need to manually do it. It's also great on the iPhone; since iOS 12 was released, the integration with the OS is massively improved.

Firefox Quantum: Developer Edition

Firefox Developer Edition is the main browser that I use when developing.

Brave โš”๏ธ

I use Brave for my personal browsing. It has an in-built ad/script-blocker and fingerprint detection so it provides a much safer browsing experience.

Terminal and the command line

I usually use the built in terminal within VS Code but when I need more space or I'm not using it for something code related, I use iTerm2. Also, instead of bash, I use Fish Shell. See my config here.

Tower ๐Ÿฐ

I use this for most of my git workflow.

Bear ๐Ÿป

I've just moved to Bear after trying out numerous other note-taking apps. It is brilliant, and has great markdown support.

Things ๐Ÿค”

The best Mac/iPhone-based task list/productivity app I know. Find out more from The Sweet Setup.

Ping menu

A super simple menubar app I use to help network connectivity and speed issues.

Magnet ๐Ÿงฒ

Window snapping and positioning.


Dash is an API Documentation Browser and Code Snippet Manager. or the Devdocs app are free alternatives.

NightOwl ๐Ÿฆ‰

This app automatically switches from light/dark mode at sunrise/sunset. ๐ŸŒ—


The best personal VPN service in my opinion. Great apps for Mac and iPhone.

Bartender ๐Ÿธ

Hide some of those pesky menubar items.