Articles

Software engineering lessons from production, raw and honest from the heart β€” almost 20 years of them. Jump to a year in the sidebar, or browse categories and curated collections.

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

A pattern for composable UI in Flask

Turn your unwieldy Flask codebase into manageable, composable fragments with this UI pattern. Very close to HTMX.

How *do* you break down a large project? INVEST

Going from Big Vision to Series of Executable Steps is a key skill for senior+ engineers. PMs can help but they don't know everything.

January 2025

How do you prioritize?

How do you choose what to work on first? As an empowered engineer that's a key skill.

Server-side React that renders as png, pdf, or interactive webapp

What if your React code could render as a PNG, PDF, static HTML, or fully interactive webapp just by changing the URL? I got a working demo! 😁

Build the abstraction first

Hardcoding logic when you're tight on time doesn't need to make a mess. You can build the abstraction first!

What I learned from Accelerate

Accelerate is the empirical research behind books such as The Phoenix/Unicorn Project and (parts of) Software Engineering at Google. I loved it.

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.

Coaching AI to write your code

Working with AI is here and it's skill. Just like google-fu became important in the mid 2000's. A few things I've learned.

The score takes care of itself

Less talking more doing

December 2024

Looking for beta readers

Wanna read my hardest engineering lessons learned? You're in luck!

Your next mountain, pt2

3+1 quick book recommendations to help you think about next year

What's your next mountain?

Life is a hill-climbing algorithm

Why system design is my favorite interview

Without reading their resume, you'll see if a candidate is fresh or has been doing this a while. And you'll know their blind spots and their strengths

Atoms, molecules, organisms

Here it is: 20+ years of programming experience distilled into 378 words. From the book I'm writing.

Smart core, thin interfaces

Here's an approach to writing code that I've been using for years and couldn't quite put into words until now. One of those _"This feels wrong but I can't explain why"_. Now I can!

Why learning and teaching the good stuff is hard

You can't learn to ride a bike from reading a book.

Empirical evidence for code modularity

Few of your engineering decisions matter long-term. Software is soft. You can change your mind. But how you structure your components is here to stay.

November 2024

Why even care about code structure

As long as it works, right?

The anatomy of a React Island

A coworker asked how React Islands work and I realized it's a technique I've been using to modernize monolithic web codebases for years, but never wrote down how it works.

Finding modules in a big ball of mud

Pulling modules out of a big ball of mud is like grabbing a slice of cheesy pizza. It's kinda separate but also not really.

Why you need observability more than tests

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

The swarm doc

Here's a doc I like to use to structure the pre-work design chat that makes later code review a breeze.

Big Ball of Mud – the world's most popular software architecture

Forget Gang of Four, here are the 7 architectural patterns real programmers use:

Why software only moves forward

At scale there are no rollbacks and no cut-overs. Your software only moves forward.

October 2024

Don't judge tech just because you're old

Your favorite way of doing things may just be an expression of tech limitations at the time

"Yes caviar is great, here's a ham sandwich"

Why do some projects ship and others seem to drag on forever? You need 3 people to get this right.

Yes, AI will "take" your job. No, you won't mind

Is the job to get things done or to memorize trivia and solve cute coding puzzles?

It made me $500k but I think content is a bad business

Why I didn't become a full-time creator/educator