Tv en telefoons in de maat
Aflevering 4: een tv en telefoons die tegelijk “Tijd!” zeggen, een code zonder Q, een telefoon die een minuut offline gaat en gewoon verder speelt, de laptop van de zaal zonder wachtwoord, en een tv die ook bij een fout donker blijft.

Vorige week kreeg de app zijn kleuren. Deze week het hart van de show: als de tv "Tijd!" zegt, zegt je telefoon het ook. Niet een seconde later. Tegelijk.
Twee milliseconden
Op een quizavond kijkt iedereen naar twee schermen: de tv aan de muur en de telefoon in je hand. Lopen die uit de maat, dan roept tante Gerdien "ik had hem al!" terwijl de vraag op haar telefoon nog niet eens stond.
Dus drukt een test honderd keer op "volgende", met drie browsers naast elkaar: een tv en twee telefoons. Van de database tot het scherm: gemiddeld 2 milliseconden. Zelfs de traagste 5% binnen 3.
Twee milliseconden. Ik heb het drie keer nagemeten, want zo snel ben ik zelf nooit. Toen kwam er een tweede meting naast, op één en dezelfde klok: van de tik op de tv tot de telefoon. 48 milliseconden, waar de eis 300 was. Ook dat klopt: bijna alle tijd zit in het opslaan, niet in het rondsturen.
De truc is wie er mag rondsturen. Alleen de database. Nooit een telefoon. De tv slaat op "we zijn bij vraag 3", en Supabase Realtime vertelt het aan elk scherm in de kamer. Zo kan geen handige neef een nep-"de show is voorbij" sturen.
Voor de testavond meldt elke telefoon hoe snel hij is. Mijn eerste versie deed dat elke twee seconden. Supabase vond dat te gezellig en gooide het toestel uit het kanaal. Met de meting, en met de show. Nu meldt een telefoon zich hooguit eens per tien seconden, en op een echt feest helemaal niet.
Vier letters, geen Q
Op de tv staan een QR-code en een code van vier letters. Wie scant, is binnen; oma typt vier letters over. Het ontwerp had als voorbeeld KQMT. Mooi, maar van de andere kant van de kamer lijkt een Q te veel op een O. Dus doet de Q niet mee.

Een test leest de QR-code van een screenshot, zoals een telefoon dat doet, en kijkt of hij naar de goede pagina wijst. En de review vond dat een code minuten na het vorige feest alweer vrij was, terwijl hij 24 uur moet rusten. Nu rust hij echt.
Scherm op zwart
Telefoons gaan op zwart. Dat is wat telefoons doen, zeker als je even een bitterbal pakt. Dan staat er rustig "Even opnieuw verbinden…", en is hij terug, dan ben je dezelfde speler met dezelfde punten.
De test zet een telefoon een volle minuut offline, terwijl de show twee stappen verder gaat. Dan weer online, zonder herladen. Binnen een paar seconden staat hij bij het antwoord, met zijn 750 punten.

Het geheim: de telefoon onthoudt zelf niets. Alles staat in de database: waar de show is en wat jij antwoordde. Na elke hapering leest hij dat gewoon opnieuw. Vergeetachtig zijn is hier een feature.
De laptop van de zaal
Een feestzaal heeft een laptop aan de beamer, en daar wil je niet je wachtwoord op intypen. Dus open je daar quizplayground.com/tv, met zes letters. Typ die over op je telefoon, en die laptop is het grote scherm van jouw show. Alleen van die show, en alleen zolang hij loopt.
De tests waren meteen groen. De review vond toch gaten: je kon eindeloos codes raden, en een per ongeluk gekoppelde laptop kwam er nooit meer los. Nu stopt het na tien foute pogingen, en heeft de laptop een knop "Nieuwe code". En een test die moest bewijzen dat de tv het einde ziet als een bericht wegvalt, hield helemaal niets tegen. Groen, maar nutteloos. Nu faalt hij zonder de oplossing, zoals het hoort.
Fouten in het donker. Een verkeerde link naar het grote scherm gaf eerst de felle witte 404 van de website. In een donkere zaal is dat een zaklamp in je gezicht. Nu blijft de tv donker: "Waar is deze pagina gebleven?", met één knop naar je eigen feesten. Hetzelfde voor een feest dat is verwijderd, en voor wie met een ander account is ingelogd. Dan staat er met welk account, maar half verborgen: l•••@gmail.com. Een tv hangt aan de muur, en de hele kamer leest mee.
Voor de nerds: elke stap van de show is een update van één rij in Postgres. Een trigger stuurt hem met realtime.send over een privékanaal per kamer, en een browser mag daar zelf niets op zetten (ADR 0014). Een telefoon die terugkomt leest eerst die rij en luistert daarna alleen naar hogere versies (ADR 0030). Het grote scherm openen zet de show vast (ADR 0022), en koppelen gaat met zes letters uit een alfabet van 20: 64 miljoen codes, een uur geldig (ADR 0031). Getest met Playwright, gebouwd met Claude Code. De hele serie staat op Achter de schermen.
Volgende week: scannen, naam, binnen. De lobby. Meld je aan en lees mee.


