Frontend engineer
I build web interfaces, and write about the parts worth remembering.
Mostly TypeScript — the language, the browser, and the small decisions that decide whether an interface holds up over time.
click to explore
Writing
All essays →Next.js 16 Has Four Caches. Here's Which One Broke Your Page.
Cache Components replaced implicit caching with four explicit layers that quietly disagree with each other. Real build output and response headers from a lab app on 16.2.11 — the cache key you didn't write, lifetimes that leak upward, and the symptom-to-layer table I use to find which one is lying.
Projects
All projects →Secure Swiss file transfer and decentralized Web3 storage platform. The world's first gateway to decentralized storage networks — serving 3.6M+ active users across 180+ countries. Features encrypted file transfer, Web3 storage integration via Storj, and token-based reward system.
Personal blog built from scratch with Astro, Tailwind CSS 4, and Canvas API. Features a 3D wireframe character, dark/light themes, editorial typography, and perfect Lighthouse scores.
A tiny, type-safe Result<Value, Error> type for TypeScript. Handle errors as values, not exceptions. Zero dependencies, under 1KB, fully tree-shakable. Features ok/err constructors, map, flatMap, match, tap, tryCatch, tryAsync, and more.
A tiny, type-safe alternative to TypeScript enums. Built on plain objects with full inference, type guards, validation, and reverse lookup. No 'as const' needed, no runtime surprises. 536 bytes.
Work with me
I take on a few freelance projects a year — the kind where the frontend is the hard part.
What I do & how to reach me →