Go doesn't have sum types, but generics get us one step closer to a useful
polyfill. If you've ever wanted exhaustive case statements, this post is for
you.
Continue reading
Using a sync cutoff when building our dbt models helped fix our flaky tests,
making our CI much more reliable and exposing latent bugs.
Continue reading
Data should be a commodity, and accessible to everyone in a company. We've
picked a data stack for tools that make this possible- here's what we use,
how it's configured, and why we picked it.
Continue reading
Tie together backend and frontend using type-safe API clients, allowing the
TypeScript and Go compilers to prevent typos and developer errors.
Continue reading
When in a Postgres transaction, the data you read can change underneath you.
Did you realise this? Many don't, for good reasons.
Continue reading
Fast build times have a number of benefits, from reliability to developer
happiness. We reduces our time to deploy to <5, and it's glorious.
Continue reading
For a small initial investment, we've found a observability setup that works
great for both production and local development. You should try it, too!
Continue reading
Any good investigation builds on assumptions, and when they're wrong you can
end up down a dark path. Read about an incident where this happened badly,
and learn some strategies to avoid falling into the same trap.
Continue reading
Starting next week, I'll be joining the incident.io team after logging off for the
last time at GoCardless. Mostly for myself, here's some reflections on the
last five years.
Continue reading
Working hard is a great way to accelerate learning, but it can come at a
cost. This post shares my experience and lessons taken from great role
models I've found along the way.
Continue reading