{ }

Check the result, not the config: how git-wrong-email works

git-wrong-email is a shell script that refuses to let a commit with the wrong email leave the machine. Why the hook that matters most is pre-push, what it costs to install a global hook without switching off every repo's own hooks, and what it still misses.

{ }

A client's email on my personal repo: why git-wrong-email exists

One day my personal projects started signing commits with the email of the client I work for instead of mine. A GUI git client had rewritten my global config, and nothing warned me.

Several Macs and a folder of scripts: why I needed macsetup

Several Macs and a folder of scripts: why I needed macsetup

I have several MacBooks that should share an environment without all of them having the same things. For over a year I handled it with Homebrew scripts, and the scripts failed at exactly that: they didn't know what was on the machine, didn't know what belonged there, and got things wrong without saying so.

What did I do this week? One command to answer it

What did I do this week? One command to answer it

I work on several machines, and some of them aren't mine. At the end of the week I need to know what I did on each one, and the answer was spread across dozens of repositories. didwhat is a command that gets it in one step, with nothing to install but a binary.

{ }

Reading back what a person typed: compactref 1.1.0

I wanted to ship a new version of my library, and my first ideas were adding Pyrefly or raising the Python version. Neither changed anything for the people who use it. What did: accepting a reference typed in lower case without breaking the 1.0 promise, and proving it is safe without the GIL instead of assuming it.

{ }

No license is not public domain

To grow my address library I reviewed more than 800 open data sources across 31 states. Most declared no license, in several the publisher's license did not match the aggregator's, and only nine states passed. This is how you actually verify a license.

{ }

Three LLM calls and not one more

I built an API that matches resumes against job postings with AI. One simple rule drove the whole design: the LLM is expensive, embeddings are cheap. The result is an API where the LLM shows up in exactly three places, and in none of them does it decide the number that matters.

I passed the Claude certification by a single question

I passed the Claude certification by a single question

I finished the courses for the Claude Certified Developer – Foundations certification knowing less than I thought. So I built an app to study with, asked Claude to help me write and correct a question bank, and practised until exam day. I passed by the narrowest margin, and that says something too.

I built an app to remember my own work

I built an app to remember my own work

It was not my memory failing: it was that I never wrote anything down. The context of what I do lives scattered across Jira, Slack, GitHub and my head, and none of those places keeps the whole story. This is why I ended up writing my own app.

Priority was never in the text

Priority was never in the text

I was about to build a feature that inferred the priority of my open items with an on-device model. Before writing it I measured it against 67 items I had labelled by hand myself. The agreement with my own judgement was zero.

2,843 days for a 365-day project

2,843 days for a 365-day project

I started a photo-a-day project in November 2018. It was supposed to take a year. It took almost eight. Here's what I learned about finishing things when life refuses to cooperate.

Claude Code in your daily workflow: automate the tedious, focus on what matters

Claude Code in your daily workflow: automate the tedious, focus on what matters

Not an installation tutorial. An honest guide on how an experienced developer can integrate Claude Code into their daily workflow without losing control of their code.

Clean Architecture with FastAPI: Separating Your Domain from Infrastructure

Clean Architecture with FastAPI: Separating Your Domain from Infrastructure

A practical guide on how to structure FastAPI projects using clean architecture principles, with real-world examples of AWS Lambda and DynamoDB integration.