Understand the game — and the product behind it.
We write about poker learning, fair dealing, product design, and the engineering choices that matter. Every article is available in Chinese and English.
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 articleRecent stories
Protobuf at the poker table: 46% less WebSocket traffic
100 tables and 900 connections: about 46% less WS payload than compact JSON. Updated with production retests after hot-path changes: complete server p99, protocol comparisons, and the limits of indexing, fewer copies, and buffer reuse.
Read articleBluffKing latency: tracing delays and measuring public capacity
From the 01:22 query failures to the 23:29 production measurement: diagnosis, changes and remaining headroom. September 9 update: a two-vCPU reproduction brings server p99 under 1ms, production, re-measured with the September 8 on-host method, falls from 7.08/12.20ms to 2.57/4.48ms, and the public ladders turn out to bound the test route, not the service.
Read articleThe website test that re-reads read_cache.rs before a cache claim ships
A file:line citation is only a bookmark until something checks it. We turned one cache article's TTLs, field allowlist, invalidation path, and latency caveat into a website test, so drifted public claims fail before publishing.
Read articleWrite the read-cache contract first: even a 5-second session cache must not extend auth
The useful part of this performance patch was not the HashMap. It was the contract: three read models, separate TTLs, field allowlists, synchronous invalidation, generation checks against late inserts, and tests for revocation and expiry before celebrating the cache hit.
Read articleWhy 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 article2-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