Sep 8, 2026
I was playing with Supabase and Next.js, after years of Postgres and Django, and some concepts were new for me. Working out what they meant took me through Postgres roles, privileges, policies, and a couple of things I had assumed for years without checking. Maybe what was new for me is new for you too :)
Sep 3, 2026
I lead a team, and the thing we come back to most often is not a technical problem. People know their work. What they usually do not know is how to communicate it: an idea nobody buys into, a question that does not get answered, a piece of work nobody realizes was hard, an opinion that never quite lands as an opinion, and feedback that was never given.
Aug 12, 2026
Every Django project I have worked on reaches the same moment. A request is too slow, someone moves the slow part into a Celery task, and the page gets fast. Quietly, the function has stopped being a function. It became a message, handed to a broker you do not control, to be run by a worker that might die halfway through. This post is my study guide for everything that can go wrong in that handoff, and what to do about each case.
Aug 15, 2020
Using seaborn and matplotlib to make great plots isn’t easy. I had been looking on the internet for complete tutorials on how to set up a good plot, but I only found small pieces of code. So here are a few tips for plotting data with the Google Global Mobility Report and matplotlib.