Built With
The stack this site is built on — chosen for performance and a good authoring experience
Astro 5
Modern static site generator
Tailwind CSS 3
Utility-first CSS framework
TypeScript
Type-safe JavaScript
Swup
Page transition animations
Latest Posts
View all posts »Writing on software engineering, frontend development and the occasional detour.

Open Graph and Structured Data: Making Links Look Good in Chat Boxes and Search Results
Break down "ugly link previews" into two separate vocabularies: Open Graph determines the card in a chat box, while JSON-LD determines what search engines understand. Explains the three silent failures of og:image, why the twitter:card attribute name is name, why Google says structured data has "no required properties," and provides a validation script that can measure the actual image dimensions yourself.

Frontend Error Monitoring in Practice: From window.onerror to Source Map Recovery
A production alert gives you just one line: app.9f2c1a.js:1:48213, and that line is two hundred functions crammed together. This article breaks error monitoring into three stages—capture, upload, and recovery—covering the five parameters of window.onerror and the pitfalls of catching resource errors, why the reason in unhandledrejection isn't always an Error, why production should use sourcemap: "hidden", and a ready-to-run script that maps a minified stack trace back to source file, line, and column.

The Many Faces of Code Review: The Truth Behind LGTM
"LGTM 👍" — a 1,400-line PR approved 40 seconds later. Those three letters can be the highest form of trust or the most expensive brush-off. We break down the jargon of the review room one by one, then look at what the research data says code review actually catches — and what it misses.

The Art of Slacking Off: An Office Survival Guide
Mouse jigglers, boss keys, "I'm running a build"—everyone knows the slacking-off jokes, but there are actually two kinds of slacking: one relies on faking activity signals, the other on automating away the waiting. They look nearly identical on your screen; the difference is what you leave behind after you walk away.
Toolbox
Languages, frameworks and tools I reach for most often