Notes & essays
Blog
Things I've learned, built, or thought too much about.
- Em dash Why em dashes being an "LLM tell" make me use them more — not less.
- Unintentional pedigree I finally have what I didn't want.
- Just one agent Why are we creating so many specialised agents?
- ★ Nothing is impossible What would make it possible?
- Deploying dbt diffs How to save time, money, and your sanity by only deploying changed models in dbt Core.
- ★ We are all vehicles A framework for understanding ourselves.
- ★ Layered architecture Creating maintainable and testable services.
- Simple model service How I built a simple embedding model service using open-source tools.
- Software projects Practical projects for building skills in software, data, and ML.
- Career options in software Discovering roles and possibilities for newcomers to the world of software, data, and ML.
- Sennheiser cable lock removal How to unlock your Sennheiser 5XX headphones for use with standard cables.
- Two is better than one An introduction to pair programming.
- Unicode address headers Encoding Unicode to prevent email send failures.
- Adventures in code performance Why your code is slow and how to make it faster.
- ★ Git under the hood Foundations, structures, and useful features of Git.
- Demand forecast Generating smart sales predictions from point-of-sale data to optimise inventory.
- The diamond type A unifying type mechanism for expressive gradual typing.
- Python's LEGB rule How Python resolves variables according to scopes.
- ★ Linotype is cold Programming will change.
- Quicksort in Haskell A brief introduction to Haskell for math people.