Build1 distinct publisher3 min readPublished
Every test in the suite came from one person's reading of ISO/IEC 18004, so it inherited that reading's blind spots. A phone camera shared none of them and rejected the encoder's output in four seconds.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Each of the fifty tests could only fail on a narrow set of things. The Galois-field tests compare arithmetic against values printed in the standard [13]. The Reed-Solomon test compares codewords byte for byte against the standard's own worked example, "01234567" at version 1, level M, from Annex I [14]. Those are genuine external oracles, and they passed, because the arithmetic was right. The matrix test is an invariant on counts: total modules minus fixed-pattern modules equals the data-bit count, for every version [15]. Counts are indifferent to placement. Move fifteen bits out of a column and into a row and the invariant still holds.
The round trip is the test most engineers would have trusted: decode(encode(text)) === text, across every text, every error level, every mask [17]. It could not fail here. Its decoder walks the data path, and format information is not on the data path [19][21]. The payload round-tripped fine, but the bug was never in the payload [21].
The defect is one transposed subscript, modules[8][i] where the specification wants modules[i][8], repeated in both redundant copies [20]. Those fifteen bits carry the mask, the error level and ten bits of BCH check, and a scanner reads them before it reads anything else [19]. There was a test against the standard's BCH tables [16], but a table of bit strings tells you the bits are correct; where they were written is a separate assertion, and nobody made it.
A phone shares no ancestry with the code under test. Different decoder, different author, different reading of the same document, and it enforces precisely the modules the test-file decoder skipped. It gave a verdict on day three, the first time the author tried it [4]. He writes that a tool one command away would have found both bugs on the first afternoon, and that he would not run it because running it felt like cheating [5]. First afternoon to day three is about two days spent building on an encoder no scanner could read [23].
That is the decision worth arguing with, because the rule as described is a check on the dependency manifest at submission [1]. An npm install in a scratch directory, used once to decode a PNG, never reaches that manifest. The deliverable stayed pure by the letter of the rule, and the verification cost showed up anyway.
The encoder side, for what it is worth, is good work. Reed-Solomon over GF(2^8) is two lookup tables and polynomial division, and none of the specification needs anything outside the standard library [11]. The single exception is DEFLATE, taken from node:zlib and wrapped in a PNG written by hand, signature and chunks and CRCs [12]. Reading the library he was replacing, the author found that npm install qrcode writes 29 packages and 2.4 MB [7], of which three do the work [8] and twenty-six are yargs and its tree, present so the library can also be a command-line program [9]. That is roughly 90 percent of the installed package count serving an interface a require() call never touches [10]. It is a widely used library at 24 million downloads a week [6]; it just puts an internationalized argument parser on your server as a matter of course [9].
The lesson transfers only under one condition. Your artefact needs a reader you did not write. QR codes have billions of them. Where the only implementation of your format is yours, there is no free phone camera, and you are back to worked examples from the spec and invariants that cannot see placement [14][15].
Ranked by verification strength, evidence, and original report placement.
The hackathon rule was standard library only: no packages, an empty dependency manifest, verified at submission.
The author rebuilt the qrcode library in 844 lines of Node with an empty dependency manifest.
By the end he had fifty tests, all green, and two bugs that not one of them could see.
A phone found the first bug in four seconds, on day three, the first time the author bothered to try it.
The author writes that a tool one command away would have found both bugs on the first afternoon, and that he would not run it because running it felt like cheating.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 31, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Claude Code walks the whole process table to inherit one shell's environment1 distinct publisher
build
The repo's own control run deleted the 5-10x WASM claim from vizcrush's launch copy1 distinct publisher
build
A default that is not a guard: tinycolor2's palette functions never return on analogous(-1)1 distinct publisher
build
A GAN beauty filter is a device budget allocation, not a feature toggle1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Self-report, but the core is checkable
The claim that carries the story - format bits belong down column 8, not along row 8, and a scanner reads them first - is verifiable by anyone holding ISO/IEC 18004, and dev.to prints both the broken loop and the fix. That is unusually strong for a single-source post. Everything around it is one man's tally: 844 lines, fifty tests, 29 packages, 2.4 MB, 24 million weekly downloads, none of it with a repository, a pinned version or a snapshot date attached, and the second bug is never even described.
Everything belongs to the incumbent
The only usage numbers in this reporting attach to the library being replaced, not to the replacement. qrcode moves 24 million downloads a week and drags 29 packages onto disk each time; the 844-line rebuild is a contest entry with one user, no release, no deployment, no second reader beyond the author's phone. The reach in this story is real, but it belongs to the thing under critique.
Argued against its own author
The rhetorical pressure here runs downward. A write-up that could have sold a from-scratch encoder instead leads with fifty green tests failing to see two live bugs and ends on the author's refusal to run a free cross-check because it felt like cheating. The one generalisation offered - a passing suite is evidence only about what you thought to test - is smaller than the material would support. The only place reach exceeds grasp is the tidy 90-percent framing of the dependency tree, which is arithmetic on a single unpinned install.
Contest post that costs its author something
The setup invites shaping: a standard-library-only hackathon with a premise to prove, a developer platform, a from-scratch rebuild of a famous package - all of it flattering by default. What cuts against it is the content. The author documents a transposed loop, a suite that verified values instead of addresses, and a pride reflex that kept a working oracle unused for two days. He also explicitly declines to make the dependency section an attack on qrcode. Motive to impress exists; it gets spent on self-indictment.
Confident on the bug, provisional on the numbers
Split the story and confidence splits with it. The diagnosis - why fifty spec-anchored tests can be rigorous and still the wrong shape - is coherent, mechanically explained, and consistent with how QR decoding works, so it stands whether or not the surrounding details check out. The measured quantities are another matter: one publisher, one author, one install, no artifact, no corroboration, and a second bug left unnamed.