Blog.
Recent Posts
How I built Equion, the mathematician's Discord
August 11, 202210 minLast week, I made Equion, one of my longest-running projects, open-source. Originally designed to…
How are mutexes implemented in Rust?
July 16, 202211 minMutual exclusion locks, or mutexes, are a vital component of any multi-threaded program. In this…
Implementing atomics from scratch in Rust
July 08, 202210 minWhen talking about multi-threaded applications and concurrency, we often hear the term "atomic". But…
All Posts
How I built Equion, the mathematician's Discord
Last week, I made Equion, one of my longest-running projects, open-source. Originally designed to…
How are mutexes implemented in Rust?
Mutual exclusion locks, or mutexes, are a vital component of any multi-threaded program. In this…
Implementing atomics from scratch in Rust
When talking about multi-threaded applications and concurrency, we often hear the term "atomic". But…
Migrating TidesX to Cloudflare Workers and Workers KV
The recent heatwave here in the UK brought huge growth to TidesX, my tide times app which serves…
Two-factor authentication from scratch with TOTP
Two-factor authentication is a vital part of securing any account. By requiring a secondary code to…
Dynamically generating embed images for Gatsby
One of the most important things about a blog is encouraging people to read it. A vital part of this…
Creating a blog with Gatsby
With the A-level exam season in full swing, I've been finding more and more creative ways to…