Uses

Last updated: May 2026

This is a list of the tools, languages, and services I use day to day for consulting, research, and my own projects. I maintain it partly as a reference for myself and partly because I get asked about my setup often enough that it is worth writing down. Everything here has earned its place by solving a real problem or making a specific part of my workflow faster.

Editor and dev environment

VS Code – my general-purpose IDE. I use it for writing blog posts in markdown, putting together demos, and any project where I want a quick feedback loop. I can open it with code . to quickly view something.

RustRover – I like to use RustRover when I need to switch between languages - for example a Rust codebase with a Python testing suite. The power feature for me in general is that Jetbrains IDEs do much better job of allowing you to click a button and run a test.

Fork – my preferred Git GUI for branch management. My favourite power feature is how easily it handles rebasing and partial commits. When I finish a feature I unstage everything, then reorder and rewrite the commits into a logical sequence that is easier for reviewers to follow.

BeyondCompare – for comparing diffs, particularly when reviewing changes across files or directories. More visual and flexible than a terminal diff.

Docker Desktop – I run most of my services and dependencies in containers. I switched to using Docker Desktop on my Mac after many years of using docker at the command line. It is more resource intensive, but the UI makes it much easier to manage containers and volumes.

Oh My Zsh with Starship – my terminal setup. Oh My Zsh handles shell configuration and plugins, and Starship gives me a fast, informative prompt that shows the current branch, language versions, and environment at a glance. I have modified it slightly to remove some of the brighter colours (like cyan and magenta) that I find distracting.

Languages and key libraries

Rust – my primary language for backend and systems work. This is what I am working in most of the time, and the language I am most comfortable with. I use it for everything from web services to data processing pipelines to command-line tools.

Axum – my HTTP framework of choice in Rust. I used to be an Actix Web fan, but Axum has won me over. It is built by the Tokio team, the ergonomics are excellent, and it composes cleanly with the rest of the Tokio ecosystem.

serde – the serialisation library that everything in the Rust ecosystem depends on. I use it constantly. It is the backbone of how I handle data in Rust.

SQLx – an async, pure Rust SQL crate featuring compile-time checked queries. I use it for database interactions in Rust projects. I really like that you can just write plain old SQL and don’t need to learn a new query language or ORM. The compile-time checking is so helpful for catching errors early.

tracing – structured, async-aware logging and diagnostics

Python – my second language, used mostly for data work, scripting, and scientific computing. I mostly use this for quick prototyping, data analysis, and when I need to use a library that doesn’t have a Rust equivalent. I also really like it as a testing suite for integration / end to end tests for Rust projects, for example testing an API by writing test cases in Python that make HTTP requests to the Rust service. You can achieve this of course with Rust but I find it much easier with Python.

Website and publishing

Hugo – static site generator for my personal site and blog. I also use it for my Courses website. It is really fast and flexible, and has a great theming system that allows me to customize the look and feel without having to write a lot of custom code.

Cloudflare Pages – I use this for quick staging sites when I need to share something publicly before it goes to production. When I create a pull request on a lot of my static sites for example, it automatically creates a staging site that I can share with others for review. It is also my hosting provider for my personal site and blog, and I have been very happy with it, and it’s free!

Plausible – for website analytics. I prefer this to Google Analytics because it is privacy-focused and doesn’t use cookies. It gives me the insights I need without having to deal with cookies and GDPR compliance.

Productivity and notes

Northstar – a productivity system I built myself. Think of it as a personal, minimal Jira: task tracking, project management, and weekly planning, tailored to how I actually work. It is a web app that I run locally, and it has been a game-changer for my productivity and organisation. Side note, I think I have tried every productivity system out there, and nothing has stuck for more than a few weeks except this one that I built myself.

Obsidian – for notes, thinking, and longer-form writing before it becomes a blog post or a talk. I like that everything is local markdown files and nothing is locked in a proprietary format.