What "contained" means and when to use it
Putting everything in a card is the fastest way to make a page feel like a grid of boxes. Here's how to use containment selectively to create visual rhythm rather than visual noise.
4 min read
[ Blog ]
Putting everything in a card is the fastest way to make a page feel like a grid of boxes. Here's how to use containment selectively to create visual rhythm rather than visual noise.
4 min read
The mistake most design systems make is building components before establishing tokens. Here's why the order matters and what happens when you get it backwards.
5 min read
Most CMS choices are made too early and regretted too late. Here's why we reach for Sanity on most projects and what makes it worth the setup cost compared to the alternatives.
5 min read
Every project has a default stack decision. Ours is Next.js with TypeScript. Here's the reasoning, the exceptions, and the cases where we'd choose something different.
6 min read
Taking fewer projects isn't a capacity problem. It's a quality decision. Here's the reasoning behind keeping the client list short and what it actually means for the work.
4 min read
The most expensive conversation in software is the one you have three weeks into a build when someone says "I thought we were also doing X." Here's how a written scope document prevents that conversation from ever happening.
5 min read
Thoughts on building software, shipped occasionally. No spam.