|
| 1 | +// SPDX-License-Identifier: PMPL-1.0-or-later |
| 2 | +// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
| 3 | += Befunge-93 Vault Cracker — EXPLAINME |
| 4 | +:toc: preamble |
| 5 | +:icons: font |
| 6 | + |
| 7 | +This file maps README.adoc claims to their implementation evidence for |
| 8 | +sceptical developers. |
| 9 | + |
| 10 | +== "A satirical UI that demonstrates esoteric programming absurdity vs. overengineered security theater" |
| 11 | + |
| 12 | +[quote, README.adoc] |
| 13 | +____ |
| 14 | +Befunge-93 Vault Cracker is a parody application that simulates an imaginary |
| 15 | +"attack" on an overengineered cryptographic vault using the power of Befunge-93. |
| 16 | +____ |
| 17 | + |
| 18 | +How this is implemented:: |
| 19 | +The single source file link:src/Bf93-vault-cracker.res[`src/Bf93-vault-cracker.res`] |
| 20 | +is a React component written in JavaScript (with a `.res` extension as a parody |
| 21 | +of ReScript). It implements The Elm Architecture (TEA) pattern: a `Model`, |
| 22 | +`update` function, and `View`. The vault stack is a static array of six |
| 23 | +fictional security layers (Ed448, SHAKE3-256, BLAKE3, Kyber-1024, Argon2id, |
| 24 | +MFA). Each "crack" step removes one layer from the array and appends an absurd |
| 25 | +log message to the attack console. No cryptography is implemented or executed. |
| 26 | + |
| 27 | +Caveat:: |
| 28 | +The `.res` extension is deliberately misleading parody — the file is plain |
| 29 | +JavaScript/JSX, not ReScript. The Befunge-93 grid displayed is ASCII art with |
| 30 | +no interpreter behind it. |
| 31 | + |
| 32 | +== "A TEA (The Elm Architecture) demonstration in JavaScript/React" |
| 33 | + |
| 34 | +[quote, README.adoc] |
| 35 | +____ |
| 36 | +A CSS-first, dependency-free single-file component. |
| 37 | +____ |
| 38 | + |
| 39 | +How this is implemented:: |
| 40 | +The component loads React via CDN (`<script src="https://unpkg.com/react/...">`) |
| 41 | +with no npm, no `node_modules`, no build step. The TEA model is: `model` holds |
| 42 | +`{ vault, log, telemetry }`, `update(msg, model)` returns a new model, and |
| 43 | +`view(model)` renders JSX. The `serve` justfile recipe starts a Deno static |
| 44 | +file server — the only runtime dependency. |
| 45 | + |
| 46 | +Caveat:: |
| 47 | +Using React via CDN is not the preferred hyperpolymath approach (ReScript is |
| 48 | +standard) — this is intentional parody of overengineered setups. A production |
| 49 | +hyperpolymath app would use ReScript compiled output. |
| 50 | + |
| 51 | +== "Built for screenshots and laughs, not actual security research" |
| 52 | + |
| 53 | +[quote, README.adoc] |
| 54 | +____ |
| 55 | +Fake metrics (Entropy, Latency, Vibes) |
| 56 | +____ |
| 57 | + |
| 58 | +How this is implemented:: |
| 59 | +The `telemetry` model fields are incremented with `Math.random()` multipliers |
| 60 | +on each crack step. "Entropy" increases, "Latency" wobbles, "Vibes" are |
| 61 | +tracked as a metric. The values have no external meaning. |
| 62 | + |
| 63 | +Caveat:: |
| 64 | +None. The metrics are exactly as meaningful as advertised. |
| 65 | + |
| 66 | +== Dogfooded Across The Account |
| 67 | + |
| 68 | +[cols="1,2,2", options="header"] |
| 69 | +|=== |
| 70 | +| Technology / Pattern | Used here | Also used in |
| 71 | + |
| 72 | +| TEA (Elm Architecture) pattern |
| 73 | +| State management for the vault animation |
| 74 | +| link:https://github.com/hyperpolymath/gossamer[gossamer] (window management), |
| 75 | + link:https://github.com/hyperpolymath/panll[panll] (panel state) |
| 76 | + |
| 77 | +| Deno static server |
| 78 | +| `just serve` development server |
| 79 | +| link:https://github.com/hyperpolymath/k9-showcase[k9-showcase], |
| 80 | + link:https://github.com/hyperpolymath/a2ml-showcase[a2ml-showcase] |
| 81 | + |
| 82 | +| Justfile recipes |
| 83 | +| `serve`, `check` |
| 84 | +| Every hyperpolymath repo |
| 85 | + |
| 86 | +| SPDX licence headers |
| 87 | +| `// SPDX-License-Identifier: PMPL-1.0-or-later` |
| 88 | +| All hyperpolymath source files |
| 89 | +|=== |
| 90 | + |
| 91 | +== Known Gaps |
| 92 | + |
| 93 | +[CAUTION] |
| 94 | +==== |
| 95 | +The source file uses a `.res` extension but is plain JavaScript/JSX — the |
| 96 | +README documents this as intentional parody, but it will confuse ReScript |
| 97 | +tooling that scans for `.res` files. |
| 98 | +==== |
| 99 | + |
| 100 | +No other known gaps. The project delivers exactly what it promises: screenshots |
| 101 | +and laughs. |
0 commit comments