Backend

104 articles · all categories

I've been building web backends since ~2004 when they were just called websites. With these essays I want to share the hard lessons learned about serverless, databases, APIs, and the ops that keep them alive.

Latest Backend articles

January 2026

The future of software engineering is SRE

When code gets cheap operational excellence wins. Anyone can build a greenfield demo, but it takes engineering to run a service.

August 2025

Quick tips for distributed event-based systems

Hidden lessons painfully learned over the years.

July 2025

These 3 alerts catch the most issues

Here's a few alerts I've found unreasonably effective over time

February 2025

I was wrong about databases

The best part about writing is that you get to learn new and exciting ways you were wrong. Databases are smarter than I thought!

*Why* the relational data model is so good

You've heard that array or list columns in a database are bad. But why? Yesterday it clicked for me

January 2025

Why you need a task queue

Task queues have been on my mind lately so here's a little primer on what they are, how they work, and why you need them when your project starts to grow.

November 2024

Why you need observability more than tests

Here's a short and sweet story about a Friday deploy. I love Friday deploys.

October 2024

Make mistakes easy to fix

You can't prevent bugs. You'll burn out. Instead focus on making them quick to fix.

August 2024

Why SQL is Forever followup

Yes SQL is super flexible. That is its strenght and its weakness

July 2024

Why SQL is Forever

Never underestimate the power of good marketing for bad products. NoSQL was fun but SQL is here to stay.

90% of performance is data access patterns

Removing a single line of code slashed database CPU usage by 66% 🤘

January 2024

How I Added a Related Articles Feature on Swizec.com Using GPT-4 Embeddings

Making 15 years of blog archives easier to navigate with AI and cosine similarity to build a related articles featur

December 2023

People like me are why you shouldn't run a hosting company

A daring adventure of manipulating GET parameters in a NextJS 14 project, pushing hosting limits and avoiding the need for data storage. Dive into the chaos of compressing inputs to keep the project delightfully storage-free.

October 2023

Bun – first impressions

I've been using Bun in a few side-projects and I like it a lot

September 2023

Similarity search with pgvector and Supabase

Explore the power of pgvector and Supabase for efficient similarity search in this comprehensive guide. Keep vector data next to your business data for efficient queries and less overhead.

March 2023

Are you annoyed by the extra space after your name [name|]?

Behind the scenes of a tiny bug that survive 919 days

Clever technical hackery can't solve the wrong design

A simple change in perspective can help you overcome complex technical challenges and save time on future projects.

January 2023

My biggest React App performance boost was a backend change

Performance lives in the unlikliest of places. Follow the metrics.

Async React with NextJS 13

We look at React's native async support and how to use it in a NextJS 13 app. Learn how to use async components, parallel loading states, and caching with React.js and NextJS 13.

October 2022

Why PATCH endpoints matter

A painful lesson from production that brought several engineers almost to tears: *Please* add PATCH endpoints to your public APIs.

Over-engineering tweet embeds with web components for fun and privacy

A way to embed tweets in static sites with full pre-renders and live updates using just 9kB of client-side JavaScript, 2 HTTP requests, and full reader privacy ✌️

September 2022

How better data modeling fixes your code

When your code feels hard, 9 times out of 10, the problem is with your data model. The signs are subtle.

Notes on A Relational Model of Data for Large Shared Data Banks

In 1970 a paper came out that changed the world of business computing. It laid the ground work for modern databases.

June 2022

You are allowed to invent HTTP status codes

A fun problem for RESTful APIs: Did you get 404 because your URL is wrong or because the resource wasn't found?

May 2022

What microservices are for

Microservices are a pain in the ass. They turn every system into a byzantine mess of complexity. But this week ... they saved my butt.

April 2022

Promise.allSettled, a wonderful tool for resilient code

The pros and cons of different approaches to writing resilient code that handles partial failures

January 2022

How to add Typeform as a Gatsby source

Every year I ask readers if they're enjoying my newsletter. Then fail to use those responses 😅 This year I said heck it and built a /testimonials page that shows everyone's feedback raw from Typeform. Here's how.

Wow API Gateway v2 is fast

A story of how my performance hunch was totally wrong and the answer that sped up an AWS Lambda 33%

Using DynamoDB Streams with the Serverless Framework

DynamoDB Streams are a convenient way to react to changes in your database. And surprisingly easy to use 🥳

December 2021

pg-mem and jest for smooth integration testing

The cult of TDD leads you down a dark and stormy path towards brittle code with a false sense of security. But there is a better way. A sweet spot between unit and heavy integration.