Elke wijziging aan BeerWeer staat hier, met datum en versienummer. Zo kun je zelf nagaan wat er veranderde sinds je hier voor het laatst keek, en wanneer.
Vier laatste plekken waar twee blokken over hetzelfde weer iets anders zeiden.
Opgelost
Het jasadvies kijkt naar dezelfde bron als de buienmeter erboven. Er stond "Nee, want er komt neerslag aan" boven een buienmeter die zei dat het de komende twee uur droog blijft. Het advies rekende met het weermodel, de meter met de radar. Zolang de radar reikt beslist nu de radar, en dat staat er dan bij. Verwacht het model regen verder vooruit dan de radar kijkt, dan noemt het advies het uur en zegt het erbij dat het van het model komt.
De regel onder de radarkaart en de buienmeter konden een andere hoeveelheid regen bij jou noemen. De radar komt een paar tellen na de rest binnen en werd daarna elke minuut ververst; de meter tekende zichzelf dan opnieuw, de regel onder de kaart bleef op de oude waarde staan. Alles wat over regen bij jou gaat, wordt nu tegelijk bijgewerkt.
De regenagenda beloofde veertien dagen en tekende alleen de lopende maand. Op 27 juli waren dat er vijf, op de laatste dag van een maand precies één. De kalender loopt nu door in de volgende maand, met beide maanden in de kop.
Een dag heet nu in de kalender droog vanaf dezelfde hoeveelheid als op de dagkaart. 27 juli stond als droog dagje in de kalender terwijl de dagkaart erboven 0,4 mm gaf. Onder de twee tiende millimeter is een dag droog, daarboven krijgt hij regen; dat is overal in de app dezelfde grens.
De grootste opruiming tot nu toe, op zeven onderwerpen tegelijk. Rode draad: de app zei op verschillende plekken verschillende dingen over hetzelfde weer. Elk blok komt nu uit dezelfde bron, over hetzelfde tijdvak, met dezelfde drempels.
Opgelost
Het weerbeeld boven aan de pagina komt uit dezelfde bron als de uurband eronder. Er stond regen bij 0,0 millimeter, 25 procent bewolking naast een uurband die 100 procent zei, en een windrichting die een paar graden afweek. De helft van die getallen kwam van één weermodel, de andere helft van alle acht samen.
Regent het nu? Daarover beslissen de millimeters, niet de weercode in zijn eentje, en het jasadvies gebruikt dezelfde regengrens als de rest van de app. Er stond "Nee, want het regent" terwijl er niets viel en de radar droog meldde.
De regel boven de temperatuur noemt het moment waar het weerbeeld over gaat, en het meetmoment erbij als de temperatuur van een weerstation komt. Daar stond het ophaaltijdstip, dat verhuist naar de tooltip. Is het beeld niet vers, bijvoorbeeld omdat de weerbron even onbereikbaar is, dan staat dat er nu ook bij.
De bodemtemperatuur in de moestuin zette de waarde op 6 centimeter diepte naast die aan het oppervlak, maar van twee verschillende momenten. Nu van hetzelfde.
De dagkaart en de uren onder diezelfde dag spraken elkaar tegen. De hoogste temperatuur op de kaart stond tot een halve graad boven het warmste uur, en het laagste getal kwam soms vijf graden lager uit dan de dag beloofde. Dagkaart en uurverwachting komen nu allebei uit dezelfde uurreeks, dus wat de kaart zegt kun je in de uren terugvinden.
De regen op de dagkaart klopte alleen voor de eerste twee dagen. Verderop stond er soms een kwart millimeter terwijl de uren er samen een hele hadden, of andersom neerslag op een dag waarop het geen enkel uur regende. De dagsom is nu simpelweg de optelsom van de uren, elke dag van de reeks.
Er stond regen bij een kans van nul procent. Kans en hoeveelheid komen nu uit dezelfde bron, dus 0% betekent ook echt droog.
Het weerbeeld van de dag mocht wel somberder worden dan het weerbericht van de modellen, maar nooit natter. Daardoor kreeg 0,4 mm een motregen-icoon en 0,5 mm een wolk. Het icoon volgt nu in beide richtingen de neerslag.
De laagste temperatuur van een dag stond nergens op het scherm. Het linkergetal in de dagrij was de temperatuur van middernacht, terwijl de voorleestekst van diezelfde regel wel een minimum noemde. Nu staat het echte minimum in de curve, op het moment van de dag waarop het koudste uur valt.
Zonuren: de app leidt de zonneschijnduur nu af uit de hoeveelheid zonlicht die de modellen voorspellen, niet uit het bewolkingspercentage. Nagemeten tegen 840 KNMI-stationsdagen zit de dagwaarde er nu gemiddeld 1,3 uur naast, tegen 2,2 uur voor het kale getal van de weermodellen en 2,5 uur voor de vorige reparatie. Dagen die er meer dan vijf uur naast zitten: nog één van de 212, was er 34.
Geen dagen meer die bijna de hele dag zon beloven. De verwachting zette voor eind juli 14,9 tot 15,0 zonuren neer, 95 procent van de tijd dat de zon boven de horizon staat. Zo'n dag bestaat niet: het KNMI mat in drie maanden nooit meer dan 95 procent en zelden boven de 90. Er zit nu een harde grens in.
De bewolking per uur sprong tussen twee uren van 100 naar 2 procent en terug. Dat is ruis van het rekenrooster, geen weer, en het bepaalde wel het wolkje in de uurstrook. De reeks wordt gladgestreken zonder dat het gemiddelde verschuift. Tegen 19.978 KNMI-waarnemingen wordt de bewolking daar ook nog wat nauwkeuriger van.
Vroeg de app de dagkaart op zonder de uurgegevens erbij, dan bleef de oude zonneschijnduur stilletjes staan. Die gegevens worden nu vanzelf meegevraagd.
De verste dagen kwamen soms van één weermodel in plaats van van acht, zonder dat je dat kon zien. Voor 10 augustus stond er 39,5 graden op de kaart (op Schiphol 40), vijftien graden boven de dag ervoor, terwijl alleen het Amerikaanse model die dag nog leverde. De verwachting stopt nu waar de modellen ophouden: liever een dag minder dan een dag die op één model rust.
De UV-verwachting komt in werkelijkheid van één weermodel, ook al leken het er twee. Dat staat er nu bij, op het scherm: onder de UV-dagen en in de details van een dag. Zo is een UV van 1 tussen twee dagen met UV 6 te plaatsen.
De verwachting liep twee dagen korter dan hij kon. Alleen de velden waar de verwachting echt op staat (temperatuur, neerslag, wind en bewolking) bepalen nog hoever hij reikt. Een bijkomend gegeven voor het onweerpaneel, dat maar door de helft van de modellen wordt geleverd, kortte de hele lijst in van vijftien naar dertien dagen. Zo'n gegeven houdt nu gewoon zelf eerder op.
Het jasadvies rekent met dezelfde gevoelstemperatuur als de kop erboven. Daar stond "Voelt als 19 graden" boven "Het voelt als 20 graden": de kop nam de meting van het weerstation, het advies het weermodel.
Achter de webserver leek elke bezoeker dezelfde bezoeker, waardoor iedereen samen één limiet deelde en de app bij een handjevol gelijktijdige bezoekers "te veel verzoeken" kon teruggeven. De limiet telt nu per bezoeker en blijft van buitenaf onomzeilbaar.
Buienverwachting: er staat nu één rangorde vast van de bronnen die over regen bij jou gaan. De echte radar gaat voor op het weermodel zolang de radar reikt, en onder de grafiek staat welke bron je op dat moment leest. Verwacht het model wel regen waar de radar niets ziet, dan zegt de app dat erbij in plaats van het verschil stil te laten.
"Gemeten" betekent weer gemeten. De grens tussen meting en verwachting kwam van de klok van onze server, die op de radar vooruitloopt. Hij komt nu van het KNMI zelf. Weet het KNMI het even niet, dan noemt de app niets meer gemeten.
Buienmeter: een bui die maar door één van de twee radarbronnen wordt gezien en nauwelijks iets voorstelt, krijgt geen stellige kop meer. Die sloeg binnen zes minuten om van "lichte neerslag vanaf 20:25" naar "het blijft droog".
Radarkaart: de regel "hoeveel valt er bij jou" komt uit dezelfde bron als de buienmeter, dus de twee kunnen elkaar niet meer tegenspreken. De melding "radar 10 minuten oud" hoort bij het beeld dat je ziet en staat niet meer onder een verwachting van vijf uur vooruit.
Onweerkaart: de kop rekent met dezelfde inslagen als de tellingen eronder. Eén inslag van een uur geleden op 225 kilometer leverde "bliksem in de wijde omgeving" bij nul inslagen in het laatste halfuur, en even later zonder uitleg "rustig". Nu staat de laatste inslag netjes als context onder een rustige kaart.
Geschikt moment begint bij nu. De zoeker bood momenten aan die al voorbij waren: om acht uur 's avonds stond "vandaag 06:00-13:00" bovenaan de lijst.
Geschikt moment noemt een uur niet meer droog als er kans op regen bij staat. Het tabblad merkte 20:00-21:00 aan als droog venster terwijl de uurband op datzelfde uur 95% kans en 1,7 mm toonde. Droog is nu overal in de app hetzelfde: minder dan 0,2 mm en minder dan 50% kans.
De teller boven de lijst klopt met de lijst. Er stonden 21 geschikte momenten boven zestien regels; nu staat erbij hoeveel je er ziet.
De UV-kop zegt waar hij over gaat. "Lage UV vandaag (piek 1)" stond pal boven een strip die voor vandaag 5 gaf. De kop rekent over de uren die nog komen en noemt dat nu ook zo, met de dagpiek erbij als die al geweest is.
De moestuin telt regen die al gevallen is niet meer mee als regen die nog komt. "Er komt regen (12,3 mm de komende 2 dagen)" telde de bui van die middag mee.
Het neerslag-saldo legt de grens bij nu. Vandaag telde wel mee bij "komende" maar niet bij "afgelopen", waardoor er 1 / 13 mm stond na een dag met 9,9 mm regen.
Blijft de pagina uren openstaan, dan schuiven de adviezen mee met de klok in plaats van te blijven hangen op het uur waarop de weerkaart werd opgehaald.
Een leeg antwoord van de weerbron, of een storingspagina onderweg, werd een kwartier lang bewaard en steeds opnieuw uitgeserveerd. Opnieuw laden hielp dan niet: zo'n pagina draagt de status "gelukt", en daar keek de app naar in plaats van naar de inhoud. Een leeg of kapot antwoord komt nu de cache niet meer in; je krijgt het laatst bekende weer of een nette melding.
De regenradar kon een beeld van uren oud als "nu" laten zien zolang de KNMI-dienst plat lag. Ouder dan een half uur telt niet meer als nu.
Buiten Nederland vroeg de app de KNMI-radar tevergeefs af en bleef het opnieuw proberen. Die vraag krijgt nu meteen een duidelijk antwoord: hier is geen KNMI-radar.
Levert de weerbron de bewolking ooit in een andere eenheid (0 tot 1 in plaats van 0 tot 100 procent), dan komt er een streepje te staan in plaats van "1%" bij een volledig bewolkte hemel. Datzelfde gold voor de zonneschijnduur: die kon 98 procent van de dag beslaan doordat de controle de daglengte gebruikte vóórdat die zelf was nagekeken.
Voelt als, vocht, dauwpunt, luchtdruk en zicht kwamen nog van één weermodel, terwijl de rest van het weerbeeld van alle acht kwam. Er stond 80 procent vocht boven een uurband die 90 zei. Ook die vijf komen nu uit dezelfde bron als al het andere.
De koppen beloven geen aantallen meer die er niet staan. Boven de windstrip stond "vandaag & 16 dagen" bij vijftien dagen, boven de zoeker "komende 14 dagen" terwijl de verwachting korter was, en de regenagenda heette twee weken. Elke kop telt nu wat eronder staat.
Op een smal scherm liepen de laatste twee tijdstippen onder de buienmeter in elkaar tot één onleesbare klont. Tijdstippen die niet naast elkaar passen laten we weg; "nu" en het laatste tijdstip blijven altijd staan.
Valt een bron even weg, dan blijft de neerslag- en bewolkingslaag van de radar staan in plaats van te verdwijnen. Je ziet dan het laatst bekende beeld, met vermelding dat het oud is, en na een tijdje niets meer in plaats van iets ouds dat zich voordoet als nu. Hetzelfde geldt voor de bliksem en de stationsmeting.
Toegevoegd
Bij elke dag in de lijst staat hoeveel modellen hem nog dragen en hoever ze uit elkaar liggen, zodra dat er minder dan acht zijn. "3 van 8 modellen, 14° verschil" zegt dat het nog alle kanten op kan.
Dezelfde informatie zit in de open API, per dag, en in de statuspagina van de engine.
Verdwijnt of hernoemt een weermodel bij de bron, dan valt alleen dat model weg in plaats van de hele verwachting.
Elk uur wordt gecontroleerd of de server nog dezelfde code draait als de broncode. Twee dagen lang stond er een reparatie klaar die nooit was uitgerold, en niemand die het zag.
Is de verwachting korter dan wat de weerbron gaf, dan staat er nu bij waaróm: hoeveel dagen en uren de bron leverde, hoeveel wij ervan uitleveren, en welk gegeven de doorslag gaf. Dat stond alleen in de open API en op de statuspagina; op het scherm zelf verandert er niets.
De verwachting beloofde meer zon en soms meer warmte dan er kwam. Allebei nagemeten tegen de metingen van het KNMI en gerepareerd.
Opgelost
Zonuren: de app rekent de zonneschijnduur nu zelf uit de bewolking per uur, in plaats van het getal van de weermodellen over te nemen. Dat getal telde een heel uur als zon zodra er even een straaltje doorkwam. Tegen de KNMI-metingen zat het ruim drie uur per dag te hoog, en op bewolkte dagen stond er soms elf uur zon waar het KNMI er nog geen één mat. Een dag met veel wolken kan nu geen zonnige dag meer heten.
Temperatuur: de dagtemperatuur komt weer van alle acht weermodellen samen, niet van één model alleen. Dat ene model (KNMI HARMONIE) blijft leidend voor buien, waar het aantoonbaar het beste is, maar het zat op sommige plaatsen structureel ruim twee graden te warm. Rond Schiphol stond daardoor twee maanden lang een te hoge temperatuur op het scherm.
De buienverwachting rekent voortaan met een gemeten heden in plaats van met één radarbron op zijn woord.
Opgelost
Buienverwachting: het nu-moment wordt gemeten in plaats van overgenomen van een enkele radarbron. Buienradar onderschatte de regen fors ten opzichte van het KNMI, waardoor "droog" op het scherm stond terwijl het regende.
Radar: de tijdbalk krijgt onder 560 pixels een eigen regel en loopt niet meer over de rand.
Verbeterd
De weer-engine rolt mee in de deploy-keten, met een controle dat de draaiende code gelijk is aan de code in de repo.