2016–2026 · 94 articles

Writing.

Migrations, debugging, AI-assisted engineering, and the occasional detour. Notes from doing the work.

Follow via RSS Browse topics

All articles

94 articles · Newest first

Why I built ChHeader

ModHeader's ad injection put me off. I built ChHeader to edit HTTP headers without ads, with local profiles and source anyone can inspect.

4 min

Optimizing Cubbly After Moving Away from SSR

Removing SSR simplified Cubbly but delayed useful inventory. I compared four client-loading compositions and kept the one that made real route content 31–42% faster.

6 min

AI Pricing Is Becoming UX

GPT-5.6 turns capability into a price ladder, while Codex Spark turns speed into a separate button. AI pricing is becoming part of the interface.

3 min

Evaluating a TanStack Table v9 Upgrade

I wanted to keep a shared table component current without accepting migration work on faith. A side-by-side benchmark made the trade-off much easier to judge.

4 min

Claude’s Guardrails End at Claude

Closed-model guardrails remain tied to the provider, even as comparable open weights spread. Public safety needs controls that survive that reality.

5 min

GLM Is Cheap. Steering It Isn't.

A lower token price pushed me toward GLM, but slow responses and manual mode switches made the work harder to steer.

3 min

I Can't Avoid the Price Gap Anymore

My company merged separate AI tool budgets into one shared pool. That's when Opus versus GLM stopped being an abstract question.

2 min

My Home Assistant Light Group Disappeared

My YAML light group vanished after an update. I blamed Home Assistant 2026.5 too quickly; the Helper fixed it, but YAML is still supported.

3 min

Tripsy Now Has a CLI (and an MCP)

Tripsy released an official CLI and MCP server in May 2026. The CLI is the better tool. Everything I documented for the SQLite approach is now unnecessary.

4 min

One Claude Code Install Is Enough

My machine has one Claude Code executable and one updater. Here is how I check the path, remove conflicts, and keep it that way.

3 min

Claude Code Comes to the Web and iOS

Claude Code on the web changes coding from an editor interaction into delegated work. That matters more than adding another interface.

2 min

Sora Isn't the Problem: It's the Mirror

Using Sora in a TikTok-style feed made social media's incentive problem hard to ignore: fabricated video is now cheaper than recording reality.

2 min

Claude Haiku 4.5: Cheap and Fast

I use Claude Haiku for small refactors, review, and debugging. Its lower cost and faster responses matter more there than deeper reasoning.

1 min

What SwiftUI's Tab APIs Actually Do

I rebuilt SwiftUI's TabView examples to separate the iOS 18 navigation APIs from the iOS 26 Liquid Glass redesign—and to see where the system takes control.

6 min

Fix Cloudflare 525 Errors with Fly.io

Cloudflare 525 errors on Fly.io usually mean the origin certificate is wrong. Fix the custom domain cert before blaming DNS.

3 min

We Rebuilt the UI Instead of Refactoring It

A new data-model entity touched several old pages. Rebuilding those UI components was faster than carrying their Flow types and old assumptions forward.

1 min

AI Is the New Backdoor Layoff

Companies can shrink teams without announcing layoffs. They call it AI efficiency, lower hiring needs, and let attrition do the rest.

3 min

How I Moved This Blog from Node.js to Bun

The package manager was the easy part. File APIs, CI, compatibility checks, and Claude Code produced most of the migration's useful work.

3 min

How Claude Code Built This Blog - Part 2

Claude Code helped build the parser, generator, templates, and Cloudflare deployment. Syntax highlighting and timezones took more work.

3 min

How Claude Code Built This Blog - Part 1

I paid about $10 to see whether Claude Code could scaffold the TypeScript static-site generator behind this blog. Most of its choices held up.

2 min

Bitcoin ATMs Are Not Financial Inclusion

Bitcoin ATMs charge steep fees and are frequently used in scams. Their placement in vulnerable neighborhoods makes the business model hard to defend.

1 min

Why I Built a Static Blog

A personal blog should be fast on a phone and boring to host — Markdown to static HTML on Cloudflare, no app server.

1 min