Writing

Notes from the work.

Technical decisions, working software, and what I learned after the documentation stopped being enough.

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.

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.

GLM Is Cheap. Steering It Isn't.

GLM costs a fraction of Opus per token. OpenCode's Plan/Build toggle doesn't cut that cost back down — it just moves it.

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.

Grouping Lights in Home Assistant

How to group color lights in Home Assistant using Helpers — and why the old YAML platform approach stopped working in 2026.5.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.