Writing
Notes on frontend craft, performance, and shipping useful software.
Short articles aligned with what I work on day to day—React, Next.js, TypeScript, and product-minded UI. Open a card to read the full post.
A practical mental model for Next.js caching and ISR
8 min read
When to reach for static generation, when to revalidate, and how to avoid fighting the framework when data freshness matters.
Next.jsCachingPerformance
Building calm real-time UIs with WebSockets and React
11 min read
Connection states, backoff, and UI patterns that keep dashboards readable when the wire is flaky.
ReactWebSocketsUX
TypeScript patterns for flexible React components
9 min read
Discriminated unions for variants, narrowing props with `as const`, and keeping ref/composition types honest.
TypeScriptReact
Dark mode without chaos: Tailwind tokens and one-off themes
7 min read
Using semantic colors, `dark:` responsibly, and keeping contrast consistent when you add a third brand palette.
Tailwind CSSDesign systems
What shipping side projects taught me about scope
6 min read
Cutting features that sparkle, choosing defaults users never see, and knowing when "done" is better than "novel."
ProductIndie hacking