From 6fe23c567107fd6214d8069f395b76c5d3dd3c3a Mon Sep 17 00:00:00 2001 From: holistis Date: Sun, 18 Oct 2026 17:21:28 +0200 Subject: [PATCH] Website: een metingen-sectie die begint met onze eigen fout Vier regels, elk met een datum en een manier van meten, in taal die een bezoeker zonder techniekachtergrond kan volgen. De eerste regel is onze eigen fout: ons controleprogramma sondeerde met de verkeerde methode en gaf daardoor achtendertig van de negenenvijftig betalende verkopers onterecht een onvoldoende. Dat staat er niet uit bescheidenheid maar omdat een cijfer zonder methode niets waard is, en omdat wie zijn eigen fout verzwijgt op het volgende cijfer ook niet meer te vertrouwen is. Twee regels pleiten tegen ons en blijven staan: nul betalende klanten, en honderdtwee mensen die de code bekeken tegenover nul installaties. Dat laatste zegt dat we gevonden worden en niet overtuigen, wat een ander probleem is dan onbekend zijn. Een pagina met alleen de goede cijfers is precies de pagina die niemand gelooft. De sectie staat boven de bestaande eerlijke statussectie, in plaats van op een eigen pagina, zodat er niet twee plekken ontstaan die uit elkaar gaan lopen. Beide talen, en de typecontrole ving de ontbrekende Engelse versie meteen. Tekst door de berichtpoort: groen, na een terechte afkeuring omdat de eerste versie beweerde dat de methode in de code staat zonder het adres te geven. --- .../src/components/sections/metingen.tsx | 37 ++++++++++++++ packages/website/src/i18n/en.ts | 28 ++++++++++ packages/website/src/i18n/nl.ts | 51 +++++++++++++++++++ packages/website/src/i18n/types.ts | 7 +++ 4 files changed, 123 insertions(+) create mode 100644 packages/website/src/components/sections/metingen.tsx diff --git a/packages/website/src/components/sections/metingen.tsx b/packages/website/src/components/sections/metingen.tsx new file mode 100644 index 0000000..f1003e0 --- /dev/null +++ b/packages/website/src/components/sections/metingen.tsx @@ -0,0 +1,37 @@ +import { Section } from "@/components/section"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardTitle } from "@/components/ui/card"; +import { useLocale } from "@/i18n/context"; + +/** + * De metingen-sectie. + * + * Elke regel draagt een DATUM en een methode, want een cijfer zonder die twee is een + * bewering. En de regels die tegen ons pleiten staan er met opzet tussen: nul betalende + * klanten, en honderd mensen die keken zonder te installeren. Een pagina die alleen de + * goede cijfers toont, is precies de pagina die niemand gelooft. + */ +export function Metingen() { + const { t } = useLocale(); + + return ( +
+

{t.metingen.h2}

+

{t.metingen.body}

+ +
+ {t.metingen.rows.map((row) => ( + + + {row.date} + + {row.title} + {row.body} + + ))} +
+ +

{t.metingen.footer}

+
+ ); +} diff --git a/packages/website/src/i18n/en.ts b/packages/website/src/i18n/en.ts index b4ddbc9..acb5a97 100644 --- a/packages/website/src/i18n/en.ts +++ b/packages/website/src/i18n/en.ts @@ -239,6 +239,34 @@ export const en: Dictionary = { "copyLabel": "Copy", "copiedLabel": "Copied" }, + "metingen": { + "eyebrow": "What we measured", + "h2": "Our own check turned out to be wrong. We tracked it down, fixed it, and wrote it down here.", + "body": "A program that buys something on its own wants to know up front whether the seller asks for money properly. We built a free checking program for that. In October we ran it against sixty real sellers, and it turned out to be telling most of them they were doing it wrong. The fault was ours: our program was knocking on the wrong door. It is fixed now. It is here because a number without a method is worth nothing, and because anyone who hides their own mistake is not worth believing on their next number either.", + "rows": [ + { + "date": "18 October 2026", + "title": "From sixty four percent wrong to zero", + "body": "We took sixty sellers from the public Coinbase list and asked each of them once for a price. Fifty nine really do ask for money. Of those fifty nine, thirty eight were wrongly failed by us. After the fix: none. The method and the raw output are in the code, so you can redo it yourself." + }, + { + "date": "October 2026", + "title": "Four builders now use our way of counting", + "body": "In the public discussions about these agreements, four people adopted our breakdown. The one that matters most is the difference between this is wrong and I could not check this. That sounds small and it is not: anyone who merges those two blames an honest seller for a failure at the checker end." + }, + { + "date": "as of today", + "title": "No paying customer yet", + "body": "Zero. Nobody outside this project pays for this yet. We would rather write that down ourselves than have someone find it out." + }, + { + "date": "last fourteen days", + "title": "A hundred people looked, nobody installed", + "body": "A hundred and two people pulled the code to look at it. The install count is zero. That means we are being found and not convincing anyone, which is a different problem from being unknown." + } + ], + "footer": "Every line above carries a date and a way of measuring. If a number changes, the line changes and the date stays visible. That way you can see whether something is still true instead of having to assume it. The code and the raw output are at github.com/holistis/agent-receipt-verify, so you can recheck every line above yourself." + }, "status": { "eyebrow": "Status, honestly", "h2": "No paying customers. Three outside parties building on the format, and work others checked themselves.", diff --git a/packages/website/src/i18n/nl.ts b/packages/website/src/i18n/nl.ts index e05ecb1..a8c4155 100644 --- a/packages/website/src/i18n/nl.ts +++ b/packages/website/src/i18n/nl.ts @@ -215,6 +215,57 @@ export const nl: Dictionary = { copyLabel: "Kopieer", copiedLabel: "Gekopieerd", }, + metingen: { + eyebrow: "Wat we gemeten hebben", + h2: "Onze eigen controle bleek fout. We hebben het uitgezocht, gerepareerd en hier opgeschreven.", + body: + "Een computerprogramma dat zelf iets koopt, wil vooraf weten of de verkoper netjes om geld vraagt. " + + "Daar maakten wij een gratis controleprogramma voor. In oktober lieten we het los op zestig echte " + + "verkopers, en toen bleek dat het bij de meesten onterecht zei dat zij het fout deden. De fout zat " + + "bij ons: ons programma klopte op de verkeerde deur. Dat is nu gerepareerd. Het staat hier omdat een " + + "cijfer zonder methode niets waard is, en omdat wie zijn eigen fout verzwijgt zijn cijfers later ook " + + "niet meer waard is.", + rows: [ + { + date: "18 oktober 2026", + title: "Van vierenzestig procent fout naar nul", + body: + "We namen zestig verkopers uit de openbare lijst van Coinbase en vroegen elk van hen een keer om " + + "een prijs. Negenenvijftig vragen echt geld. Van die negenenvijftig gaven wij er achtendertig " + + "onterecht een onvoldoende. Na de reparatie: geen een. De methode en de ruwe uitkomst staan in de " + + "code, dus je kunt het zelf overdoen.", + }, + { + date: "oktober 2026", + title: "Vier bouwers gebruiken onze manier van tellen", + body: + "In de openbare gesprekken over deze afspraken namen vier mensen onze indeling over. De " + + "belangrijkste is het verschil tussen \"dit is fout\" en \"dit kon ik niet nakijken\". Dat klinkt " + + "klein en is het niet: wie die twee op een hoop gooit, geeft een eerlijke verkoper de schuld van " + + "een storing bij de controleur.", + }, + { + date: "stand van nu", + title: "Nog geen betalende klant", + body: + "Nul. Er is buiten dit project nog niemand die hiervoor betaalt. Dat schrijven we liever zelf op " + + "dan dat iemand het ontdekt.", + }, + { + date: "laatste veertien dagen", + title: "Honderd mensen keken, niemand installeerde", + body: + "Honderdtwee mensen haalden de code binnen om te kijken. Het aantal installaties staat op nul. " + + "Dat betekent dat we gevonden worden en niet overtuigen, en dat is een ander probleem dan " + + "onbekend zijn.", + }, + ], + footer: + "Elke regel hierboven heeft een datum en een manier van meten. Verandert een cijfer, dan verandert de " + + "regel en blijft de datum zichtbaar. Zo kun je zien of iets nog waar is in plaats van het te moeten " + + "aannemen. De code en de ruwe uitkomsten staan op github.com/holistis/agent-receipt-verify, dus je " + + "kunt elke regel hierboven zelf narekenen.", + }, status: { eyebrow: "Status, eerlijk", h2: "Geen betalende klanten. Wel drie externe partijen die op het formaat bouwen, en werk dat anderen zelf hebben nagerekend.", diff --git a/packages/website/src/i18n/types.ts b/packages/website/src/i18n/types.ts index ca409da..ffba345 100644 --- a/packages/website/src/i18n/types.ts +++ b/packages/website/src/i18n/types.ts @@ -109,6 +109,13 @@ export interface Dictionary { copyLabel: string; copiedLabel: string; }; + metingen: { + eyebrow: string; + h2: string; + body: string; + rows: { date: string; title: string; body: string }[]; + footer: string; + }; status: { eyebrow: string; h2: string;