Notesfromthework
An occasional set of notes on software delivery, architecture decisions, and the operational detail that does not usually make it into marketing pages. Written by the people doing the work.

Designing a multi-tenant B2B SaaS data model when you have ten customers, not ten thousand
A pragmatic decision guide for early-stage B2B SaaS teams choosing between shared-schema, schema-per-tenant, and database-per-tenant data models. Includes a default that survives the first hundred customers, the five markers that should push you to isolate, and how to design today so the migration is cheap when it comes.

How to write an integration spec a vendor cannot misinterpret
A practitioner template for integration specs that force decisions before code is written — idempotency, retry semantics, payload contracts, error taxonomy, and the observability hooks that make partner blame games short.

Fixing INP in a real React app: a teardown of the slow interactions we found and what we changed
A walkthrough of an INP rescue on a production B2B dashboard. The profiling we used, the four interactions that were dragging the 75th percentile into the red, and the React 18 and architectural fixes — useDeferredValue, transitions, event delegation, virtualisation, hydration boundaries — that moved the app from failing to passing.

Server Components in production: data-fetching patterns that hold up under real load in Next.js 15
Production-tested data-fetching patterns for React Server Components in Next.js 15: request memoization, parallel awaits, streaming with Suspense, the new `use cache` directive, and where Server Actions actually beat Route Handlers.

Build vs buy software in 2026: a decision framework for CTOs
An opinionated build vs buy decision framework for CTOs at 50-300 person B2B companies. Score strategic importance, differentiation, five-year total cost, and team capacity, with a worked example for a 120-person operations system.

Why web apps get slower over time, and what actually fixes it
Slowness is usually one of three problems, and teams misdiagnose the expensive one. A diagnostic framework for web applications that have quietly decayed.

Software Development in 2026: Faster, Smarter, and Harder to Trust
AI writes a large share of new code in 2026, but developer trust has dropped to 29%. The real shift is not speed, it is verification. What the data says.

Build vs. buy vs. integrate: a decision framework for growing teams
Build-vs-buy is the wrong question for most growing teams. Here is the decision framework we use, and when custom is honestly the right call.
More notes are on the way. If you would like them in your inbox, let us know.
Want to talk about something we have written?
We are always happy to discuss the ideas in these notes — or where you disagree with them.

