← Back to blog
ARTICLE ARCHIVE

Every story, in one place.

21 bilingual articles, newest first.

Why WebSocket delivery backed up: the 2 Mbps suspect and a measured 22.3% byte cut

Production at 300 tables recorded 199 send-queue evictions while CPU and Postgres were not saturated. The same code held 1,000 local tables at 1.2 ms action p99 but produced 4.07 Mbit/s of JSON egress against a 2 Mbps production link. That narrows the bottleneck to outbound delivery; compact-v1 then cut the same-load bytes from 10.18 MB to 7.91 MB, while the exact component and new production capacity remain unproven.

Read article

Where fairness proof belongs: the architecture behind removing one button

A change that looked like deleting a button was really about where a trust promise belongs: review explains the hand, while the fairness page owns exported commit-reveal proof. The reusable move is testing the absence so broad claims cannot drift back onto the wrong screen.

Read article

2-vCPU production test: 150 passes, 200 lags, 300 collapses

The numbers up front: Tencent Cloud SA2.MEDIUM4, 2 vCPU, 3.6 GiB and 2 Mbps fixed public egress, with Postgres and Caddy on the same host. 150 players pass the latency budget, 200 miss it, and 300 hit a 4.1-second p99; that is the starting point for isolating outbound delivery, optimizing the code, and rerunning the same ladder.

Read article

Three layers of rate limiting: caller traffic, account quota, and machine capacity

Is this caller too fast? Has this account used its allowance? Is this box full? The third question cannot be built out of per-caller counters, and it is the one about survival. How we closed that gap in Rust and axum: shed instead of queue, limit the thing that actually costs money, replace fixed-window boundary doubling with GCRA, and choose each limiter's failure direction on purpose.

Read article

What FDEs Actually Do: AI Agents in Traditional Industries

One major kind of FDE work is bringing AI agents into customer service, logistics, restaurants, and other established workflows. It may not be deeper than backend engineering; the challenge is combining engineering, industry understanding, and customer delivery.

Read article

How to update a SHA-256 pin when a release script changes its dependency

A release helper correctly refreshed a public source URL, but did not tell the agent to update the SHA-256 pin that CI uses to guard hosted work. The fix was not another reminder; it was making the producer print its downstream pin and turning a stale assertion into a regression tripwire.

Read article

The limits of CSS static analysis: don't rebuild the browser in CI

To prove that one CSS custom property was font-only, a locale gate nearly rebuilt the cascade inside itself. The robust boundary was not another selector case; it was admitting where static evidence ends and making the safe authoring path local, explicit, and testable.

Read article

How to bind a release to the correct CI workflow run

Trigger a workflow and then grab the latest green run, and you may be watching an old run, a concurrent run, or a different release entirely. A reliable pipeline carries one immutable identity from source intent to workflow attempt, then proves the public effect with version stamps.

Read article

The docs promised blog-cadence automation, but no scheduled job called it

Two documents said the daily heartbeat surfaced our blog staleness, citing a spec section that did not exist. History showed why: the wiring was deliberately deferred behind a sign-off gate, and that reasoning was honestly recorded — in the commit message. The documentation described the same work in the present tense. 59 branches then landed on main with nothing flagging it. Deferred work written in the present tense stops being a plan and becomes a claim.

Read article

A $400/month AI team would cost $53,403 at API list prices

Two flat-fee coding subscriptions cost $400/month. The same 30 days of real usage, priced at the metered API list rate, comes to $53,403 — 133× the subscription, an annualized list-price run-rate higher than a senior engineer's fully-loaded cost. Here is that bill rebuilt per model from local CLI logs, and why a fully-autonomous AI team runs on the flat fee, not the metered API — which would flip the arithmetic.

Read article

Brand-language migration: reuse a layout without inheriting old vocabulary

A temporary table codename seeped into directories, components, tests, docs, machine data, and the company website. Cleaning it up was not a global replace; it was a brand-language migration with a target schema, an ordered cutover, semantics-preserving normalization, and a CI constraint.

Read article

From Chatbot to Production-Grade AI Coding

The concepts, architecture, failures, and evidence behind my Claude Code + OpenAI Codex workflow—from models, terminal/CLI, local/cloud/remote control to memory, MCP, skills, plugins, harnesses, workflows, hooks, and dual-AI delivery.

Read article

The test invoice was fake. The money was real.

A Telegram Stars payment test charged S$1,077 of real money through Apple. Not a Telegram bug, not an Apple bug — we had never established where safe test Stars should come from. Why a stable client's top-up still charges cash, how to pre-provision a zero-cash test balance today, how every cent came back the same day, and the fail-closed guard that caps a repeat through the server's invoice path at one attested Star.

Read article

Verify a poker hand yourself — and what a 'provably fair' verifier must refuse

"Provably fair" is worth nothing if you can't run the proof. Here's how to verify one of our hands — export it, then check it in the browser or from the CLI, the same verifier behind both — and the part worth stealing: the checks that earn trust are the ones that make the verifier refuse.

Read article

Encrypted dealing from source: which cards can the server see?

ADR-101 now lets a host enable Advanced encrypted dealing for all-human, no-AI practice-chip rooms. Only for hands in this mode, the server holds no plaintext of unshown hole cards. Trust the operator to run the audited open-source build; the running binary cannot be verified remotely. If any player drops, the whole table visibly downgrades to server-visible dealing. Practice chips, not real money.

Read article

Do we deal cooler hands on purpose? The architecture answer

A simple “no” is not enough. The real answer lives in the path from browser to session task, seed commit to flop / turn / river, and what actually recovers after disconnects or deploys.

Read article

How to turn one bug report into a whole-class cleanup

A 401 that didn't redirect was 33 of them. A toggle labeled "verifiable" was three surfaces, not one. The habit that turns a single bug report into a swept class — and the trailer that leaves the receipt.

Read article

We called it GTO. It wasn't.

A button in our app said "GTO." It was reading a 169-cell table, not solving a game. The honest taxonomy — chart vs CFR-approximation vs solved tree — and why we made a unit test fail if the word "GTO" ever comes back.

Read article

Five database failures in shared AI-agent memory

Memory shared by many agents across sessions quietly hit five classic database failures — bloat, concurrent writes, orphaned rows, schema drift, synchronized expiry. One was a single filename-compare away from silently overwriting the wrong records.

Read article

Guardrails for AI coding agents: isolated worktrees, evidence, and independent model review

Most of a three-platform app, written by AI agents — but agents over-report "done," step on each other, and loosen your tests. Here's the operating system that contains them.

Read article

Why every AI coding agent needs its own git worktree

Point two agents at one checkout and they corrupt each other. Here's the fix — and how to make it automatic.

Read article