Skip to main content

The Blog

Thoughts on data engineering, software, and the occasional rabbit hole.

Featured

There's No Bill, But You Should Still Track Your Tokens

10 min read

Local models don't send you an invoice, so it's tempting to stop measuring anything. Here's why I log, manage, and visualise token usage anyway — and the ties back to the context-window bug that bit me a few posts ago.

7 min read

Turning the Local Agent Loose on Real Feedback

I pointed my offline coding agent — Ollama, Cline, and Qwen2.5-Coder:14b — at a real backlog from Phonics Journey. Nine Dependabot PRs and a pile of words falling back to a sparkle emoji.

7 min read

Going Fully Local! A Coding Agent on a MacBook Air M4 with Ollama, Jan, and Qwen2.5-Coder

I wanted a coding agent that doesn't phone home. Here's how I got Qwen2.5-Coder:14b running entirely on a 16GB MacBook Air M4, using Ollama and Jan, wired into VS Code as an actual agent.

2 min read

First Look: Phonics Journey Running on Android

Last week I wrote about building Phonics Journey. A lot of people asked to see what it actually looks like.

6 min read

The Accidental App Dev: When a Phonics Request Becomes a Full-Stack Journey

I'm a Data Engineer. My day usually involves wrangling SQLMesh models, optimising ETL pipelines, and making sure data stays intact across distributed systems. I think in batches, streams, and schemas.

6 min read

Thinking About Switching from uv + pipx to Pixi? Read This First.

I've been running uv and pipx as my Python toolchain for a while now. It's a good setup — fast, clean, and uv in particular has earned its reputation as the current gold standard for Python package management. So when Pixi came up in conversation recently, I spent some time actually thinking through whether the switch makes sense.

8 min read

ETL vs ELT: Knowing Which One to Reach For

ETL and ELT are two of those terms that get used interchangeably in job descriptions and architecture documents, as if the letter order doesn't matter. It does. They represent genuinely different approaches to moving and transforming data, and picking the wrong one for your situation creates problems that compound over time.

5 min read

Why I Created a GitHub Organisation (And Why You Probably Should Too)

I've had a personal GitHub account for years. It does what it needs to do — it holds my repos, tracks my contributions, and occasionally embarrasses me with commits from 2018 that I'd rather not think about.

6 min read

AI Agents: The Good, the Frustrating, and the Genuinely Useful

Full transparency upfront: this post was written by a GitHub Copilot agent on my behalf. I gave it the brief, it wrote the words. My thoughts, its keyboard. Make of that what you will.

4 min read

How I Used an AI Agent to Modernize My Portfolio

I recently handed the keys of my portfolio site over to a GitHub Copilot coding agent and asked it to modernize the whole thing — version upgrades, UI polish, dependency management, the lot. Here's what that actually looked like in practice.