Blog.
Recent Posts
Optimising content moderators with ML in Switzerland
March 30, 2023 12 minLast week, I had the privilege of participating in START Hack 2023, a 36-hour hackathon hosted by ST...
Exploring garbage collection in V8 with WebGL
January 7, 2023 12 minOver the Christmas break, I’ve been working on a game engine called TSGL, using TypeScript and Web...
Can you learn to better predict the future?
November 20, 2022 7 minI spent the last weekend participating in HackX, a hackathon hosted by the Cambridge Existential Ris...
All Posts
Optimising content moderators with ML in Switzerland
March 30, 2023 • 12 minute readLast week, I had the privilege of participating in START Hack 2023, a 36-hour hackathon hosted by ST...
Exploring garbage collection in V8 with WebGL
January 7, 2023 • 12 minute readOver the Christmas break, I’ve been working on a game engine called TSGL, using TypeScript and Web...
Can you learn to better predict the future?
November 20, 2022 • 7 minute readI spent the last weekend participating in HackX, a hackathon hosted by the Cambridge Existential Ris...
How to learn another programming language
November 14, 2022 • 10 minute readPlenty of people have already written about how to learn to program, but there are comparatively few...
Building Stuart, a blazingly-fast static site generator
September 3, 2022 • 14 minute readA few weeks ago, I watched a video introducing me to Hugo, a static site generator written in Go tha...
How I built Equion, the mathematician's Discord
August 11, 2022 • 11 minute readLast week, I made Equion, one of my longest-running projects, open-source. Originally designed to he...
How are mutexes implemented in Rust?
July 16, 2022 • 11 minute readMutual exclusion locks, or mutexes, are a vital component of any multi-threaded program. In this pos...
Implementing atomics from scratch in Rust
July 8, 2022 • 10 minute readWhen talking about multi-threaded applications and concurrency, we often hear the term “atomic”....
Migrating TidesX to Cloudflare Workers and Workers KV
June 21, 2022 • 7 minute readThe recent heatwave here in the UK brought huge growth to TidesX, my tide times app which serves ove...
Two-factor authentication from scratch with TOTP
June 8, 2022 • 6 minute readTwo-factor authentication is a vital part of securing any account. By requiring a secondary code to ...
Dynamically generating embed images for Gatsby
May 29, 2022 • 6 minute readOne of the most important things about a blog is encouraging people to read it. A vital part of this...
Creating a blog with Gatsby
May 25, 2022 • 3 minute readWith the A-level exam season in full swing, I’ve been finding more and more creative ways to procr...