writing.
Notes, essays, build logs — work-in-progress thoughts, written in plain text and read in any font.
autoAlpha: 0 Hides the Element. Not the LCP Clock.
Traced a 2-second LCP render delay to GSAP hiding my hero subheading before animating it in. The fix was simpler than I wanted it to be.
Google Can't Build Compute Fast Enough. So It Rents.
Google committed $180B in capex this year and still had to rent xAI's GPUs for Gemini. The AI compute crunch is real, even for the cloud.
Microsoft Open-Sourced Durable Execution in Postgres
Microsoft open-sourced a durable execution engine inside Postgres. If your job state is already there, maybe your orchestration should be too.
I Was Fetching Full Post Bodies Just to Count Words
My /writing archive was 3s slow because it fetched every post's full content to compute word count on every request. Denormalization fixed it.
Cloudflare Bought Vite. 'Neutral' Gets Complicated.
Vite has 100M+ weekly downloads and just joined Cloudflare. The license didn't change. The incentive structure might have.
The :not() Specificity Trap That Broke My Mobile Links
I added site-wide link underlines using :not() exclusions. Mobile broke. The culprit was specificity math I thought I knew.
Gradual Typing Won. Elixir v1.20 Is Just the Latest.
Elixir v1.20 ships with set-theoretic gradual types — no annotations required. It's the latest proof that the typing debate is already over.
Flux.ai Silenced a Review. The Silence Is Louder.
Adafruit found data in a Flux.ai misconfiguration and tried to publish a review. They got a CFAA demand letter at 10:38 PM instead.
My Homepage Ranked Fine. My Other Pages Didn't Exist.
Two URL prefixes for desktop and mobile, zero canonical tags — and Google had no idea which version of my pages was the real one.
Meta's AI Support Bot Became Instagram's Weakest Link
Hackers politely asked Meta's support bot to hand over Instagram accounts. It did. That's not an AI bug — it's a design flaw.