Voice Translate & Dictate side panel UI August 2026 · 7 min read

What I Learned Building a Voice Translation Chrome Extension

Speech recognition stops itself without warning, iframes hide your target field, and Google Docs breaks every rule. Here's what actually went wrong, and how the extension recovers from each one.

Read the post →
The Install Voice Translate button on the extension's landing page August 2026 · 6 min read

Why You Can't Put an "Install Extension" Button on Your Website

I wanted a one-click install button on my landing page. Chrome said no — for a very good reason. Here's the actual security model, and the closest thing that's allowed.

Read the post →
This personal site's hero section, the subject of the debugging story August 2026 · 8 min read

Debugging the Bug That Wasn't There

My screenshot tool kept showing a broken sticky navbar. The DOM insisted it was fine. One of them was lying — a story about trusting measurements over pictures.

Read the post →
GitHub Actions workflow runs for the voice-translate-extension repo August 2026 · 5 min read

The GitHub Pages Jekyll Trap That Almost Broke My Deploy

GitHub Pages quietly offered to auto-build a Jekyll site from my README — and it silently overwrote my real landing page. Here's what happened and how to avoid it.

Read the post →
CSS fix: min-width: 0 on a grid item August 2026 · 5 min read

The CSS Grid Bug That Only Shows Up on Phones

A code snippet in a grid column pushed my entire mobile layout off-screen. The cause: min-width:auto, the default nobody remembers grid items have.

Read the post →
An ads.txt file declaring an AdSense publisher ID August 2026 · 6 min read

What Actually Goes Into Getting a Site AdSense-Ready

The real technical checklist for a personal site applying to AdSense — and why thin content, not a missing snippet, is the most common reason sites get rejected.

Read the post →