Writing

First post. I built the pipeline before the blog

I've been meaning to write for years. Took me building an entire automated pipeline to finally get here. This is what this week looked like.

First post. I built the pipeline before the blog
Hội An, Vietnam

I've been meaning to write for some time. Took me building an entire pipeline to finally get here. Very me.

What I actually shipped: the publishing pipeline

The thing I actually shipped this week is this post. Not in a cute meta way. I mean I built the whole system that produced it: MDX files in a /writing folder, a list page, posts opening in a glass panel with a shareable ?post=slug URL, a local /admin page that reads a draft JSON and publishes straight to GitHub via API, Vercel picks it up, done. Then a generate-draft script that reads my devlog and calls Claude to write a first pass.

I started the whole thing because I never write even though I want to. The honest version of every content system I've tried is: too much friction, I stop. So I went flat MDX files over a database. Easy to commit, easy to read, nothing to maintain. I can migrate later if it actually becomes a problem, but it won't, because this is a personal blog.

The CSV export tradeoff at work

At work the interesting problem was CSV export for the analytics tables. The data was already sitting in Redux so I didn't need a new backend endpoint. Just serialize what's loaded and hand it to the browser. The tradeoff I'm sitting with: it only exports the current view, not everything. "Download all" would mean either walking pagination or a new endpoint, and for now exporting what you're looking at is the right call. I'll revisit if someone actually complains.

Swimming, and optimising for clean lap data

I've started to swim this year. There's a 50m pool near me in Vietnam and I kept stopping at 25m for breaks, which completely breaks the Mi Band's lap detection. It needs the wall turn to register. So now I finish the full length even when I'm dying, just for clean data. Slightly broken priority system but here we are.

Also been fixing my kick. I was kicking constantly and burning through all my oxygen in the first 50m. The cue that's helping: legs are a rudder, not an engine. One kick per arm entry, opposite leg. Two-beat kick. It's slower to learn but I can actually breathe now.

Vietnam notes

Separate Vietnam update: finally understood mango varieties. I kept buying the sour kind, the ones for salads, by accident. Turns out I want Xoài Cát Hòa Lộc. Took me longer than I'd like to admit.

Vacation starts Saturday. Hội An and Đà Nẵng, both apparently full of people right now. The 27th is a big day. That's all I'll say.

← Back to writing