Blog

All posts, sorted by most recent.

·

Take-Home Assignments That Don’t Waste People’s Time

I’ve been on both sides. The good ones share scope, time boxes, and a clear rubric.

The Day CSS Layout Stopped Feeling Like Magic

Flexbox for one axis, Grid for two — and the mental model that unblocked me.

·

How I Stopped Procrastinating on My Own Blog

I got tired of never publishing. So I wired WhatsApp → n8n → GitHub and made posting as easy as texting a friend.

I Let AI Draft My Posts — Here’s What Still Feels ‘Mine’

The model doesn’t have my job stories, my bad deploys, or my taste. I use it anyway — just not the way the Twitter takes suggest.

I Replaced a Bunch of Cron Scripts with n8n (And Sleep Better)

n8n looks like a toy until you’re debugging a 2 a.m. webhook. Here’s how I use it for real work — including this blog’s publish pipeline.

I Banned Stack Overflow for a Week (Here’s What I Used Instead)

Docs, source, and rubber duck — not virtue, just a forced reset.

Why I Still Route Some Alerts Through Email

Slack is loud. PagerDuty is serious. Email is the boring pipe that never left.

·

Vim, VS Code, and the Religion I’m Not Joining

I’ve switched editors three times. The only thing that moved the needle was learning my debugger.

·

Three API Mistakes I’ve Shipped (So Maybe You Won’t)

Versioning, pagination, and the boolean that meant three different things.

How I Read a Codebase I Didn’t Write (Without Pretending I’m a Genius)

A repeatable order of operations: entrypoints, data flow, then opinions.

My Boring Vercel Deploy Checklist (Copy-Paste Friendly)

The stuff I verify before telling a client ‘it’s live’ — env vars, redirects, and the OG image that wasn’t.

Structured Logs vs. Print Statements: A Weekend I’ll Never Get Back

One outage taught me why JSON logs and correlation IDs aren’t resume fluff.

I Removed a Popular Library and Nothing Broke (At First)

How I knew it was dependency bloat, not ‘best practice,’ keeping it around.

·

I Rewrote a 200-Line Python Script in Rust (Was It Worth It?)

Honest post-mortem: speed, DX, and the moment I missed dicts more than I expected.

·

Five Git Habits I Stole From Better Engineers

None of these are flashy. That’s why they survived my laziness.

The Migration That Was 'Just Adding a Column'

Spoiler: it wasn’t. A Postgres story about locks, bad timing, and the one checklist item I skipped.