I expected the old system Bash to be the suspicious interpreter. This machine produced the opposite result. This time, macOS Bash 3.2 finished the command in about ten milliseconds. Homebrew Bash 5.3.15 did not return before the timeout. The command was not a build, an install, or a network request. It printed a zsh…
EN2026-08-26
I went looking for a small shell lesson in my engineering memory. I found a neat one. A Bash script used this shape: The recorded fix said to capture the producer first, check its exit status, and feed the saved output to the loop with a here-string. That is a reasonable fix. It is also exactly what commit f51385a did…
EN2026-08-24
The fallback has more than one possible outcome. One repository can supply contributor statistics through the GitHub API. Another can need a bare clone and git log --numstat. Another can still fail. My workflow needed to say that much without printing a list of repository names into the log. So I gave it one line…
EN2026-08-22
One number on my GitHub profile card kept lying with excellent typography. Lines of code changed sometimes dropped to zero or came out suspiciously small. The failure mode was quiet: unavailable data could become a numeric zero inside an otherwise complete-looking SVG. Nothing in the card's shape explained why the…
I wanted to publish a tiny SVG card showing where my coding time went during the last seven days. Languages were easy. Projects were not. A public card might contain rows such as: The private project's real name is already absent in this example. WakaTime has supplied the placeholder Unknown Project. So the privacy…
EN2026-08-21
Part 3 of The Portfolio Is an Interface. I added English post routes to my portfolio and used a condition that looked impossible to misunderstand: If a post has English, generate /posts/<slug>/en. What could possibly go wrong? Three of the six posts in that first corpus answered the question. They were English-only…
EN2026-08-20
Part 2 of The Portfolio Is an Interface. I froze a resume snapshot, recorded its SHA-256 hash, and wrote a validator that rejected later edits. Then my formatter edited it. Prettier did not corrupt the Markdown. It did not delete a sentence, reorder a section, or hallucinate a new skill. It removed twelve blank lines.…
EN2026-08-19
Part 1 of The Portfolio Is an Interface. I wanted one resume file to feed everything: the Korean page, the English page, the printable documents, and the work pages on my portfolio. One source of truth, fewer places for a date or sentence to drift. Very tidy. Then I wrote a test fixture with a fake phone number in it…
Every guide to Anthropic prompt caching tells you the same debugging step, and it is a good one. If cache_read_input_tokens comes back zero across repeated requests with an identical prefix, something in that prefix is changing between calls. A timestamp in the system prompt. A UUID. A dict that serializes in a…
EN2026-08-18
I set a 30-second timeout. The run took 120 seconds. The timeout was working perfectly. I write a small Prettier plugin that formats Dart code blocks inside Markdown. It does almost nothing on its own — it hands each block to the dart format binary you already have installed and puts the result back. A thin wrapper…
VS Code already ships with Git support. So when I started Minimal Git Explorer, the sensible shortcut was to ask the built-in Git extension for repository data. I deliberately did not take it. The built-in extension API is internal rather than an officially documented, versioned contract. Minimal Git Explorer instead…
EN2026-08-13
Debug logging is supposed to observe a program. That sounds too obvious to deserve a rule. Then put a cursor on prefs in this line and ask a source-editing tool to “log what is under the cursor”: What should it insert? If the tool expands the selection to the widest nearby expression, it may generate this:…
EN2026-08-12
Follow via RSS or receive new posts by email.