Blog
Popular this month

20 September 2026
Generating Social Preview Images Without a Single Font File
Every post now gets a real social-preview card, generated on request from a JSX template — and the whole thing works without shipping or loading a single custom font.

16 September 2026
A Tag Filter With Nothing Yet to Filter
The filter bar only renders when at least one published post has a tag. Right now, zero do — which makes this the first feature on the site that shipped invisible on purpose.

12 September 2026
Trending Posts From Data That Was Already There
A "popular this month" widget sounds like a new tracking system. It turned out to be a JOIN against pageviews the site had been recording for another reason the whole time.

31 August 2026
The Default Value That Passed tsc and Failed the Build
A page component with `= {}` on its props typechecked cleanly and broke `next build` anyway — a class of error the type checker alone will never catch.

27 August 2026
An RSS Feed Nobody Could Find
The feed had existed since the blog's first version. What was missing wasn't the feature — it was a single link tag, and the habit of checking before building.

24 July 2026
A PT/EN Toggle Without a Second Content Pipeline
Portuguese visitors get translated site chrome, not a second copy of every post and project. Here is the line drawn between "translated" and "not."

21 July 2026
An RSS Feed in the Next.js App Router, in About Twenty Lines
A /rss.xml route handler over the same published-posts query the blog already uses. Cheap to add now, easy to regret skipping later.