Blog.

Mapping Maritime Traffic with H3 Hexagons

— How I wrangled millions of raw vessel position reports into a structured H3 grid — and what that grid makes possible. ...

The Tiny UI Detail That Sent Me Down a Rabbit Hole

— I assumed fetching favicons reliably would take 10 minutes but it turned into one of those deceptively simple problems that somehow eats an afternoon. ...

The New Bottleneck Isn’t Engineering

— Code is getting cheap. Judgment isn’t. As AI tools accelerate development, UX, product decisions, and business clarity become the real constraints. ...

Are LLM's just "fancy autocomplete"

— If predicting the next word can lead to poetry, problem-solving, and profound insights, then perhaps we're witnessing not the limits of artificial intelligence, ...

NoSQL databases are over-engineered solutions to simple problems

— Many applications reaching for NoSQL databases are solving problems they don't actually have, while creating new ones they definitely don't need—here's why ...

Inserting 3 million rows into Postgres in Go

— Reducing GTFS ingestion times from 15 minutes to under 10 seconds using PostgreSQL’s COPY FROM ...

Setting up Express.js with Typescript

— How to set up and configure an Express.js server with Typescript ...

Display pretty code snippets using DatoCMS's structuredText block

— If you are using the StructuredText block from DatoCMS it can be a bit confusing at first to figure out how to display Code blocks using your own custom ...

Syntax Highlighting with Prismjs and Nextjs

— When setting up this blog I found myself going in circles a bit trying to get code snippets and syntax highlighting to work nicely without too much ...