IT + HOME DIY
I automate the boring parts, then write about what broke.
I'm Quang, a backend developer in Hanoi. I spent ten years on .NET, Kafka and Redis, and the last two mostly on AI agents. Away from the keyboard I do DIY repairs and small woodwork, and side projects run on a rack at home. This blog is the log of both.
| Location | Hanoi, VN |
|---|---|
| Experience | 10 yr |
| Stack | .NET, Kafka, Redis |
- 1Desk, wood top
- 2Desk legs
- 3Dell 25-inch monitor
- 4Slim keyboard
- 5Logitech M590 64 × 40 × 103 mm
- 6MacBook Pro 14-inch, M4 Pro 312.6 × 15.5 × 221.2 mm
- 7HP EliteDesk 805 G8 Mini 177 × 34 × 175 mm
- 8TP-Link Omada 8-port switch
- 9Synology DS225+ 108 × 165 × 232.2 mm
- 10CyberPower VP700ELCD 100 × 227 × 260 mm
- 11The PC, aquarium case
Currently running
- At work: AI agents that each person on the team runs from Slack, plus a dashboard that tracks what they cost.
- A video pipeline I run for a few clients: uploads, dubbing, and GPU rendering across a small fleet of servers. Read about the pipeline, the uploads, the GPU.
- A bridge between a chat app and my agents, so they can read and reply to messages.
- Coding agents on a schedule that work through my own backlogs overnight. Read about the kanban.
- The home lab, including self-hosted memory for those agents. Read about the census, the memory.
Latest writing
everything else- The one-word test that told me my delegate model didn't exist
I told Claude Code to hand bounded coding work to Codex. A wrong path exited 127 and read as \"unavailable,\" a missing redirect hung forever, and the CPU meter could not tell a stall from a healthy run.
- The lock I added and reverted four minutes later
A run lock for a scheduled agent was keyed on a live process. It went in at 09:12 and came out at 09:16, because on that box the process never dies.
- Timing language models with a bicycle essay and thirty facts about the Moon
Three throwaway prompts, a speed meter that lied by a factor of five, and ten days of changing my agent's default model. A feel test, written down honestly.
- Three ways to break a rendered video in one week
A pixel aspect ratio off by one part in 8,000, a GPU admission counter read one await too early, and a form field that sent null when it meant nothing. Three bugs in one video pipeline, September 18 to 20.
- Teaching an AI to play an old Flash game so I don't have to
A Playwright bot drives Onslaught 2 inside Ruffle and asks a reasoning model where to put turrets. It never looks at the screen, and the bugs that mattered were about timing and keyboard focus.
Fastest way to reach me is Telegram. Email works too, just slower.