Workbench notes.

Technical logs, system architectures, and home-lab engineering — written as the work happens.

Redesigning This Site: From Terminal Goth to Editorial Cream

This site used to look like a hacker movie prop. Now it looks like a magazine that codes. Here's the design system behind the switch — and how an AI agent shipped it in one session.

Lab Census, Mid-2026: Eleven Containers and One Empty Chair

A headcount of everything running on the Proxmox cluster right now — taken live from `pct list` — including the container that quietly replaced Pi-hole while nobody was looking.

Giving My AI Agents a Shared Brain (Self-Hosted, Third Attempt)

How my Claude Code and Antigravity sessions ended up sharing one long-term memory — a self-hosted Hindsight instance on a Proxmox LXC — after two failed prototypes.

Shipping to the Living Room: When the Hard Part Is the Internet

Deploying our GPU video app to a teammate's home box took an afternoon. Getting it onto the public internet — past CGNAT, two modems fighting over one IP, and a Viettel router with a genuine firmware bug — took the rest of the day.

The PC I Didn't Buy

A few days of hardware research, one month's salary saved, and the realization that the machine was never the point.

The Power of GAS: Free Compute Hiding Inside Your Google Account

Google Apps Script is the least glamorous platform I run code on, and possibly the highest-leverage: my lunch orders, inbox hygiene, and half my finance pipeline run on it — for free, with zero OAuth ceremony.

Xu: Typing 'Lunch 80k' Is the Whole Interface

My personal finance tracker's newest feature is deleting most of its own UI — an LLM chat tab that turns 'lunch 80k' into a drafted transaction waiting for one confirming tap.

Putting My AI Agent on a Token Diet: 36,000 Commands Through RTK

Every shell command my coding agent runs goes through a Rust proxy that compresses the output before the model reads it. Real numbers after months of use: 2.7 million tokens saved — and two gotchas that almost made me uninstall it.

ai-bot: A Rust Telegram Bot Is the Front Door to My Money Stack

Xu and Chia both have web UIs. Nobody in my house uses them. The interface everyone actually uses is a small Rust bot that turns Telegram messages into API calls — with an LLM doing the translation.

What It Actually Takes to Ship a Virtual Microphone on Windows

A friend asked for a real-time voice changer for livestreamers. The voice-changing part is easy. The 'appearing as a microphone' part is where Windows makes you pay.

Tiền: The Robot That Reads My Bank's Email So I Don't Have To

Banks won't give me an API, but they can't stop sending email. So a Cloudflare Worker parses every transaction alert, pings Telegram with category buttons, and routes the results to the rest of my money stack.

Chia: I Built My Household a Splitwise That Lives in Telegram

A Vietnamese bill-splitting app on Cloudflare Workers — live-editing Telegram notifications, Monday-morning debt reports via cron, and an inbox for machine-suggested expenses.

The Hermes Experiment: An Agent That Hires Other Agents

For two weeks in June, container 124 housed an AI orchestrator with its own browser, Telegram line, and shared memory — delegating coding work to headless Claude Code. Here's what worked, what hung for four hours, and why the container is gone.

The Userscript Exoskeleton: Automating the Last Mile in the Browser

Some automation can't live on a server — it has to happen inside the logged-in browser tab, between me and the web apps I'm forced to use. Tampermonkey is where those fixes live.

Retiring the Baby Tracker: A Post-Mortem of a One-Day App

I built a feeding tracker in a single day. It worked perfectly and died within weeks — killed by the one dependency I couldn't provision: spare attention at 3 AM.

I Gave Claude Code a Telegram Number

A 300-line Python bot on the Proxmox host turns my terminal coding agent into something I can text from anywhere — streaming its tool calls into the chat while it works on the lab.

The GPON Stick Experiment: One Less Box, One Very Hot Dongle

I tried to replace my ISP's ONU box with a Huawei MA5671A SFP stick in the MikroTik. It worked. Then it hit 80°C.

The Lab Levels Up: Protected Power and Production Apps

Going from a pile of parts to a protected, high-speed ecosystem running Pi-hole, Immich, and Firefly III.

Home Lab almost ready

My first home lab setup using Proxmox, a compact HP server, and a new NAS.