Notes from the lab
Build logs, architecture decisions, and the occasional rabbit hole. Every post is in English and Korean, and the tape says which unit it's about.
November 2026
-
Nov 3
More Rules Made It Worse. A Ledger Fixed It.Riroa
Riroa Live has one LLM write a five-character social feed, one day at a time. Characters forgot promises, let grudges fade, and kept repeating the same invitation. Server-held state fixed that, prompt rules didn't, and most of the score I gained on one scenario turned out to be fitted to it.
October 2026
-
Oct 29
Korean IME in macOS WebKit Leaves Only the First Consonant (xterm.js, Monaco)vaquita
Type Korean into xterm.js inside a Tauri app and most syllables come out as just their first consonant, because macOS WebKit sends Hangul composition without composition events. In the Monaco editor the same cause made the line shake, and the fix was different.
-
Oct 25
Reading Agent Status Without Hooksvaquita
Claude Code and Codex now tell the terminal when they're working, waiting on you, or finished, through OSC 7501, an escape sequence not yet three weeks old. Listening to it takes no hooks, but the two agents speak it differently, and the hard part turns out to be knowing when a turn is done.
한국어로 hook 없이 에이전트 상태 읽기
-
Oct 6
The Like Never Movedlike-surgeon
When a song's upload dies, YouTube Music seems to move your like to a replacement. It doesn't. Liked songs is your YouTube likes shown in the same order, and lining the two lists up shows which like is behind every song.
한국어로 좋아요는 옮겨진 적이 없었다
-
Oct 4
Renderable Isn't GoodIki
Getting an agent to draw and rig a 2D character that looks right took a reference to aim at, a critic that isn't the artist, and a second reference for the head turn. The turn is still the weakest score.
한국어로 렌더된다고 잘 만든 건 아니다
-
Oct 3
From 0.52 to 0.90: Five Steps to a Better Chord Analyzerchordotomy
How chordotomy's chord accuracy climbed, from a DSP-only first version to a pretrained model with better beats, and what each step cost.
-
Oct 3
The Model Already Knewchordotomy
Three bugs in my chord analyzer, two of them found with one J-pop song. Each time, the model had the right answer and my code dropped it.
한국어로 모델은 이미 알고 있었다
September 2026
-
Sep 28
The CPUs Weren't Rigged. My Emulator Was.WC2008 Rating Lab
Every CPU duelist in an old Yu-Gi-Oh! DS game has a rating that moves, and nobody had written down how. Pinning it down took a sum that came out exact, an emulator with nobody at the controls, and a tournament draw that only looked rigged.
-
Sep 17
The Server Finished. The Character Didn't.Charivo
My voice character's face kept resetting mid-sentence. Fixing it took a deleted heuristic, a barge-in that asked the wrong question, and a mock that tested an event order the SDK can't produce.
August 2026
-
Aug 18
My 300-Line Agent Protocol Was Working Around One Parameterhyperclaude
I measured why an autonomous loop burned a 5-hour limit so fast, found an upstream bug, and dropping the one parameter behind it deleted most of the protocol I'd just written about.
May 2026
-
May 22
How My Agent-Team Revise Loop Earned a 300-Line Protocolhyperclaude
Five dogfooded failure modes that turned seven lines of pseudocode into a state machine — inside hyperclaude's plan-loop and implement-loop.
-
May 9
Three ways to generate Open Graph images, and the one I builtDOGimg
Hand-designed PNGs, param-driven services like vercel/og-image, and a URL-driven generator built on @vercel/og — why the third one won.
-
May 7
Why Google Search Console can't fetch your github.io sitemap
Why every diagnostic on the artifact came back green, why the public theories don't quite agree on the cause, and the custom domain that finally fixed it.
-
May 5
Chrome Extension OAuth: From getAuthToken to launchWebAuthFlowCommentarium
Why Chrome's account chooser sometimes silently swallows your cancel callback, why the obvious band-aid races itself, and the primitive that side-steps both.
한국어로 Chrome 확장 프로그램 OAuth: getAuthToken에서 launchWebAuthFlow로
-
May 4
Three Agents, One Document: A Claude Code Multi-Agent Doc PipelineBackend Interview Guide
A lightweight content pipeline for a Korean backend interview guide — why splitting writer, reviewer, and consistency-checker beats a single all-in-one agent.
-
May 3
Chrome Extension Iframe Auth: From chrome.cookies to CHIPSCommentarium
How a Chrome extension's iframe survives third-party cookie blocking — without bypassing the browser.