martyw.dev

Posts

Long-form writing — walkthroughs, deep dives, and the occasional rant.

A single unbroken glowing orange line running diagonally across a dark, textured charcoal surface.

Stable URLs without a redirect table

A short random prefix plus a throwaway slug gives you URLs that survive title changes — no UUID ugliness, no slug-history table. Plus why the collision-retry loop matters more than the keyspace suggests.

A black stylus drawing a flowing orange flourish across a dark surface marked with faint circuit-board patterns.

How this blog gets written

How posts and notes here actually get made — AI-assisted, with a structured pass that flags speculation rather than laundering it as fact.

An exploded view of stacked translucent circuit boards, the top layer glowing orange with intricate traces.

My 2026 Tech Stack

Two years on from the 2024 list. The shipping-code part has changed completely; most of the rest looks the same — and where it doesn't, the reasons are worth knowing.

A glowing line-art house and a key balanced at opposite ends of a horizontal beam, on a dark circuit-board background.

The rent-vs-buy spreadsheet I finally closed

For a couple of years I was sure that renting and tipping the difference into index funds beat buying. Then I bought a smaller, older house on a worse street — and worked out what the spreadsheet had been missing about leverage and tax.

A single orange filament travels left-to-right across a dark backdrop, then fractures at a point into hundreds of fine divergent threads.

Promise.all isn't batching

When parallelising N small queries looks like a fix and is really just self-DoS at a slightly higher concurrency level.

A row of identical glowing orange pyramidal shapes lined up across a grid of darker cubes.

Write batch-shaped functions by default

Why I write repository methods that take arrays and return Maps, even when the only caller — today — is asking for one thing.

Glowing orange threads converging from a scatter of particles into a single luminous beam against a dark circuit-board backdrop.

Batching requests we don't control

How pushing dataloader up to the HTTP controller — out of the resolver layer it usually lives in — cut downstream database load by 83% on a read-heavy endpoint.

Close-up of an orange-glowing microchip seated on a dark circuit board.

My 2024 Tech Stack

What I'm reaching for this year — languages, frameworks, infra — and why.

A stylised orange GraphQL-like graph against a dark backdrop.

Thoughts on GraphQL After 2 Years

What two years of running a production GraphQL service taught me about where it earns its keep and where it doesn't.