Archives
Every post, grouped by year.
-
Claude Code Says When It's Done, Out Loud 🎧
A Claude Code hook and a tiny Flask server in Termux. My phone says “done” in my headphones when Claude is finished.
-
Copy Shell Commands in WezTerm Without the Mouse 😎
Ctrl+Shift+Y, a letter, done. WezTerm Quick Select copies the command out of Claude Code's answer, even mid-sentence.
-
WezTerm: Open a Remote tmux Directory in Windows Explorer
Ctrl+Shift+E in WezTerm opens the directory my remote zsh session is in, five layers away. OSC 7, tmux passthrough and Lua.
-
Parsing Money From Receipts: Read It From the Right
An AI-written parser in our festival expenses app passed every test and still turned 1,234,567 into 123 öre.
-
How I Rebuilt Coretours on 100% Cloudflare
Moving Coretours from a WooCommerce monolith to Pages, Workers, D1, KV, R2 and Queues. What broke and what got easier.
-
Astro + Cloudflare: My Stack for Content Sites
Why Astro on Cloudflare Pages is my default for marketing sites, blogs, docs and small storefronts, including this one.
-
How I Structure Fullstack Projects on Cloudflare
A repo layout, a deploy pipeline, and a few opinions about where features live in a Cloudflare-only stack.
-
My Development Workflow with Claude Code and ChatGPT
How I actually use Claude Code and ChatGPT day-to-day: agents in the terminal, dev containers as guardrails, one rule.
-
Why I'm Building Cloudflare-Native Systems
Every new project I start runs on a single provider - Cloudflare. Here's why that constraint produces better systems.