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.

TypeScriptReactNext.jsAstroTailwind CSS
Available for select freelance work Work with me

Interactive 3D wireframe figure showcasing latest blog posts

Latest post

click to explore

Writing

All essays →
/ 16 min read

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 →
WeSendit Live

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 Live

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.

ts-safe-result Live

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.

ts-safe-enum Live

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