Backend engineer building production systems at scale — film school grad turned engineer, now leading backend at Moba. This blog collects what I've learned along the way.
- Events synced
- 7M
- Essays shipped
- 167
- Polyglot services
- 6
- Bilingual writing
- EN/KR
Work
Arch Calendar
Sole-maintained backend from legacy to public launch — multi-account calendar sync, payments, and real-time updates across 7M events.
visit ↗3B System
Sanitized system map for the 3B agent harness behind this site: layers, subsystems, decisions, and blog-series progress.
system map →Project Crucio
Zero Trust security for generative AI — 6 polyglot microservices (Python + Go + Rust + TypeScript), Kafka event streaming, hash-chained audit, and full LGTM observability on hybrid GCP + NAS infrastructure.
visit ↗
AI Code Review Confusion Patterns
Thirteen distinct ways Claude, Copilot, and Codex behave on PRs — ten failure modes plus two productive behaviors to amplify, plus an analyst-side error class. With detection signals and the empirical tiebreaker that resolves factual disagreements.

Claude Code Agent Teams
Experimental feature for orchestrating multiple Claude Code instances as a coordinated team with shared task lists and inter-agent messaging

Codex `apply_patch` Hooks: The Matcher Fires, the Payload Differs
Corrected 2026-09-20. Codex hooks do see `apply_patch` as a tool, and an `Edit|Write` matcher reaches it. What still breaks a reused Claude hook is the payload: patch text instead of a file path, and many files per call.

AI PR Review Validation Patterns
Fifteen patterns where AI code reviewers (Claude, Copilot, Codex) produce false positives, plus the classification framework and reinforcing-comment templates that keep triage fast.

Claude Code: Shared + Personal AI Config Pattern
Split AI instructions into committed (shared) and gitignored (personal) layers

The pre-commit hook race that put my files in someone else's commit
Two sessions committing to one repo, a slow pre-commit hook, and `fatal: cannot lock ref HEAD`. The loud failure is the easy one — the quiet failure hands your staged files to the other session's commit under its message.

Markdownlint Conventions
7,500 markdownlint errors across 200 markdown files. The rules that mattered, the configuration that stuck, two pre-commit traps that surface only in nested scopes, a wrapped issue reference that turns into a heading, and the strict-preset migration that collapsed an 18-rule custom config into one extends + five carve-outs.

Anthropic Prompt Cache TTL + Cost Mechanics
Anthropic silently dropped Claude Code's prompt-cache TTL from 1 hour to 5 minutes around early March 2026. Without explicit awareness, idle gaps ≥5 min between messages evaporate the cache and force a full cold cache-write on the next message — pricing it at 1.25× base input on the entire conversation prefix.

Serena MCP — Multi-Profile Setup for Claude Code (cpers/cwork)
Installing the Serena MCP server across a Claude Code dual-profile setup (cpers/cwork) plus Codex, including the four recommended hooks, the system-prompt override, and the non-obvious "installer writes to default ~/.claude.json, misses profile-specific stores" trap.

Gemini Asymmetric Embeddings
Retrieval gets better when queries and documents are encoded differently. Gemini expressed that with a task_type parameter, and its newer model moved the same idea into the prompt.