Naar de inhoud

De plant groeit, en de flowchart had gelijk

Sprint 3 ·

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.

← Devlog