Writing
Here are some articles I have written. Some of them are write-ups of scientific papers I've contributed to, some are tutorials, others are more general blog posts.

Atomistic scattering modelling of the solution structure of human dimeric IgA1 reveals a structural and mechanistic basis for IgA nephropathy
A writeup of some of the first work I did during my PhD, ten years in the making.

The costs of systematising a hobby
The system that guarantees you read for 20 mins is the same one that means you won't read for 90.

Authentication with Django from First Principles
A ground-up exploration of a modern authentication flow for Django APIs. By implementing password hashing, JWT access tokens, refresh tokens, and token revocation from first principles, this article builds a clear mental model of how authentication systems actually work.

Getting your data back from Slack
Slack offers no easy way to export your own conversation history. Here's how I built a tool to do it anyway, by mimicking the browser.

Layers of abstraction: Building a Python wrapper for the PDB search API
A good library should hide complexity from users who don't need it, while still letting power users access everything. I rebuilt my Python wrapper for the Protein Data Bank search API from scratch, and this is how I thought about the problem.

2025 Book Review
My ten favourite books from 2025.

Learning with LLMs
It is now easier than ever to learn anything we want.

2024 Book Review
My ten favourite books from 2024.

The Apple Vision Pro: A Review
A review of the Apple Vision Pro - a solution eagerly awaiting its problem.
GraphQL for the delivery of bioinformatics web APIs and application to ZincBind
A writeup of my review of the use of GraphQL in Bioinformatics.

ZincBindPredict—Prediction of Zinc Binding Sites in Proteins
A writeup of the paper on the machine learning component of my PhD.

Nobody knows what an 850% increase is, so please stop saying it
You Won't Believe This One Weird Trick for Properly Communicating Large Relative Increases.

Python Decorators for Beginners
A reasonably advanced feature of the Python language, explained simply.

atomium - a Python structure parser
A writeup of our paper on my atomium python library.

Inverse pharmacology: Approaches and tools for introducing druggability into engineered proteins
A writeup of a review on inverse pharmacology that I contributed to.

How to Learn Complicated Things
Being able to learn complicated, difficult things is one of the most important skills you can have - but the obvious way to do it isn't the best way.

ZincBind - The Database of Zinc Binding Sites
A writeup of my paper on ZincBind, the core of my PhD project.

Death to FooBar
A common coding practice which helps no one.

SynPharm: A Guide to PHARMACOLOGY Database Tool for Designing Drug Control into Engineered Proteins
A writeup of the paper on my first Bioinformatics project.

Reinventing Programming Wheels
Is it always a good idea to focus solely on things that have never been done before when starting new coding projects?

The IUPHAR/BPS Guide to PHARMACOLOGY in 2018: updates and expansion to encompass the new guide to IMMUNOPHARMACOLOGY
A writeup of my contribution to the 2018 database release of the Guide to PHARMACOLOGY.

Thermal melt circular dichroism spectroscopic studies for identifying stabilising amphipathic molecules for the voltage-gated sodium channel NavMs
A writeup of my first scientifc paper.