Skip to content
Back home

NOTES & IDEAS

Thinking out loud.

Lessons from building, experiments, and things worth sharing.

Anyone Can Knock on Your Webhook - Here's How to Check It's Really GitHub

A webhook is a public URL that makes your app do real, billable work. If you don't check who sent the request, anyone who finds the URL can set it off. Here's how to verify it's really GitHub, explained with a wax seal.

Sep 5, 2026 · 4 min read

Four Different AIs, One Wall Socket

My AI PR reviewer lets each user pick their own AI - OpenAI, Gemini, Claude, or Grok - and the rest of the app doesn't know or care which. Here's the simple "wall socket" idea that makes adding a new one a one-file change.

Sep 5, 2026 · 4 min read

"Related Posts" That Actually Understand the Post

Most "related posts" widgets just match shared tags or title words, so two articles about the same thing in different words never find each other. Here's how I made mine match by meaning, explained with a librarian.

Sep 5, 2026 · 4 min read

Why My Real-Time App Broke When I Added a Second Server (and the Fix)

My live-comments feature worked perfectly on one server, then quietly broke for half my users on two. Here's the trap - and the small Redis fix - explained from scratch.

Sep 5, 2026 · 7 min read

Who's Allowed to Do What? Permissions Without the Mess

Sprinkling "if role is owner or editor" checks all over your code is how permission bugs are born. Here's how I collapsed all of it into one idea - ranked roles and a single "do you have enough?" check - explained with building keycards.

Sep 5, 2026 · 4 min read

How Do You Log Someone Out of a Login Token? The One-Number Trick

Login tokens (JWTs) are designed so the server keeps no list of them - which is exactly why "log out everywhere" is surprisingly hard. Here's the one-number trick that fixes it, explained with a hotel keycard.

Sep 5, 2026 · 4 min read

How I Safely Store Other People's API Keys

My app holds each user's AI key. If my database ever leaked, those keys could be stolen. Here's the simple idea I used to make a leak harmless, explained with a coat-check.

Sep 5, 2026 · 5 min read

Why My Blog Doesn't Crash When Its Cache Dies

A cache is supposed to make your app faster. Done wrong, it quietly becomes a new way for your app to go down. Here's the simple rule I used to keep mine harmless, explained with a notepad and a filing cabinet.

Sep 5, 2026 · 5 min read

Saving a Flood of Data Without Melting Your Database

An analytics SDK fires data in bursts. Saving it one row at a time melts your database; saving it all at once hits a hidden Postgres limit nobody warns you about. Here's the sweet spot, explained with a moving truck.

Sep 5, 2026 · 4 min read

Don't Make the Customer Wait While You Send the Email

Sending an email while the user waits ties your app's speed to a server you don't control - and loses the email if it fails. Here's the simple fix, explained with a coffee shop counter.

Sep 5, 2026 · 4 min read