Dit is de sprint waar dit project zes keer niet aan toe is gekomen. Elke eerdere poging begon bij een grid en bij dingen neerzetten, en strandde voordat er ook maar één plant groeide. Nu draait de plant tick.
Elk speluur kijkt een plant naar vijf dingen — temperatuur, water, pH, licht en mest — en daaruit volgen groei, kwaliteit, ziektekans en verdorringskans.
De flowchart had gelijk, ik niet
De tick komt uit een flowchart die in juli 2017 is goedgekeurd. Bij het schrijven van de tests bleek dat ik iets aannam wat daar nergens staat: dat een verkeerde temperatuur de groei remt.
Dat doet hij niet. Kou zet je oogst niet stil — kou maakt je plant ziek. De groei loopt gewoon door.
De test is aan de flowchart aangepast, niet de code aan mijn aanname. Dat verschil is wezenlijk, want het is precies de spanning die het spel nodig heeft: een koude nacht kost je niet meteen iets zichtbaars, maar hij bouwt wel een rekening op die later komt.
temperatuur buiten bereik → ziektekans omhoog groei gaat door
water buiten bereik → verdorringskans groei gaat door
pH buiten bereik → remt de groei
licht geen → er groeit niets
mest geen → er groeit niets
Alleen licht en mest zijn poorten. De rest is prijs, geen muur.
Het tempo wordt afgeleid, niet gekozen
Onder perfecte omstandigheden rijpt een tomaat in precies 178 uurtikken, oftewel 7,4 speldagen. Cassave groeit exact vier keer zo traag, omdat hij er vier keer zo lang over doet.
Dat is geen getal dat iemand heeft ingetypt. Het volgt uit de gewasduur in het databestand. Pas je die morgen aan, dan klopt het tempo vanzelf mee — en dat is het hele punt van gewassen als data.
Waarom kwaliteit een gemiddelde is en geen strafpuntensysteem
Kwaliteit is het tijdgewogen gemiddelde van de vijf factoren over het hele leven van de plant. Dat was een keuze, en die keuze is nu een test:
| 6 slechte uren van de 178 | kwaliteit boven 0,95 — een gemiste dienst overleef je |
| 89 slechte uren van de 178 | kwaliteit onder 0,80 — structureel wegblijven niet |
Dat is precies het gedrag dat je wilt. Eén keer te laat is geen ramp; een maand niet omkijken wel.
Tests die niet bijten zijn geen tests
Eén set tests is per ongeluk tegelijk met de code geschreven in plaats van ervóór. Ze slaagden meteen — en een test die nooit rood is geweest bewijst niet dat hij iets kan vangen.
Daarom is de code twee keer opzettelijk gebroken:
| Wat er veranderd werd | Wat er omviel |
|---|---|
| Kwaliteit als slechtste score in plaats van gemiddelde | de test op de korte dip: 0,5 in plaats van boven 0,95 |
| Ziekte even snel laten herstellen als verdorring | de test op het nawerken van ziekte: 0,0 |
Beide bijten. Ze onderscheiden dus echt de twee ontwerpen die tegen elkaar afgewogen zijn, in plaats van alleen te bevestigen wat er toevallig staat.
Wat bewust níet is ingevuld
Water en mest staan in de drie banden die de bron geeft, en niet in liters — want de bron geeft geen liters. Opbrengst is een factor en geen kilo's, want geen enkel gewas in de bron heeft een basisopbrengst. Twee termen van de groeiformule staan voorlopig op 1, met de reden erbij op de plek waar ze staan.
Verzinnen zou sneller zijn geweest. Het staat nu als gat genoteerd, en een gat dat je opschrijft is een taak.
Vijfennegentig tests groen; een heel speljaar van 864 tikken rekent in minder dan 50 milliseconden.
Volgende sprint: de wereld eromheen. Temperatuur en licht komen dan niet meer uit een schuifje maar uit een klimaat.