Designing Analytics Screens That Fail Out Loud
A blank chart can mean no data, a failed request, an expired session or a missing permission. How to make each one say which it is, with two cases from my own work.
Field notes on product engineering: data-heavy interfaces, frontend architecture, product delivery, and lessons that survived production.
A blank chart can mean no data, a failed request, an expired session or a missing permission. How to make each one say which it is, with two cases from my own work.
Gated steps, a different model family reviewing every milestone, and plain files as memory: the checks I put around AI coding agents, and where they fall short.
How the portfolio connects professional evidence, editorial content, interactive Labs, API safety, and Three.js with an AI-assisted workflow of gated steps and independent review.
Lessons from shipped, data-heavy products: decision-focused information design, performance, accessibility, edge cases, and measurable post-launch behavior.
A current guide to Server Components, client boundaries, streaming, Cache Components, Server Actions, and production tradeoffs in Next.js 16.
The career decisions, ownership shifts, mistakes, and sustained learning that shaped a path from a small startup to senior product engineering.