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.