The Dream Steps Journal

Working notes on design, technology, and AI.

No fluff. No listicles. Writing from inside the work — for founders, product teams, and marketers who care about getting the details right. We publish what we wish someone had told us before we shipped.

From the journal

Do you actually need Kubernetes?

Kubernetes is one of the most powerful pieces of infrastructure software ever built — and one of the most over-adopted. The honest question is not whether it is good. It is whether you have the problem it solves.

Evals for AI products — why you build the test before the feature

For an AI product, the evaluation suite is not QA you add at the end. It is the product specification, the regression safety net, and the only honest measure of whether the thing works. For an AI-first product, the evals come first.

Express vs NestJS — which Node.js framework should you choose?

Express and NestJS sit at opposite ends of one axis: how much structure the framework gives you. Express gives almost none, on purpose. NestJS gives a great deal, on purpose. The right choice is about your team and your timeline.

AI agents vs traditional automation — which does your workflow need?

AI agents and traditional automation both take work off your team, and the words get used interchangeably. They are not the same thing. Automation follows fixed rules; an agent decides what to do, step by step. Choosing the wrong one is expensive in both directions.

UX vs UI design — what’s the actual difference?

Hiring one when you need the other is the most common — and most expensive — mistake in product teams. Here's what each discipline actually does, where they overlap, and how to tell which one you need right now.

Why is your Shopify store slow? (And how to actually fix it.)

Every second of mobile load time costs roughly 7% of conversions. Here are the seven reasons Shopify stores are slow — apps, themes, images, scripts, Liquid, cart, theme JavaScript — and the order to fix them.

Native (Swift / Kotlin) vs cross-platform — when do you actually need native?

Cross-platform is the right default for most products in 2026. Three specific scenarios where native earns its 70%+ time-to-ship premium. Outside those, picking native is engineering vanity.

Next.js vs React (CRA / Vite) — when do you actually need a framework?

Vanilla React (CRA, Vite) and Next.js look similar but solve different problems. Five real differences, the scenarios where each wins, and the decision framework that resolves the choice.

Headless Shopify with Hydrogen — when do you actually need it?

Headless trades engineering complexity for storefront flexibility. Three scenarios where Hydrogen + Oxygen genuinely earn the complexity — and five where standard Shopify wins.

Why is your React app slow? Bundle size, hydration, and the seven fixes

Most slow React apps are slow for the same seven reasons. None are inherent to React itself; all are decisions that can be reversed. Here is the order to fix them, in order of impact.