45 offentliggjorte tal genberegnet mod astronomy-engine 2.1.19, en uafhængig implementering. .
| Kontrolleret | Antal |
|---|---|
| Rækker i solhvervstabellen | 10 |
| Rækker i jævndøgnstabellen | 10 |
| Måneformørkelser | 7 |
| Solformørkelser | 1 |
| Bytider ved solformørkelser | 9 |
Det her site sælger én ting: at tallene er rigtige. En dagslængde, et solopgangstidspunkt eller en formørkelsesdato er ikke noget, en læser kan efterprøve ved at kigge på siden. Man må tage os på ordet — og derfor skylder vi at gøre rede for, hvordan vi ved det.
Denne side beskriver, hvad der kontrolleres, hvordan, med hvilke tolerancer, og hvad kontrollen har fanget. Tallene i boksen øverst er ikke skrevet ind i hånden: de skrives af selve kontrolkørslen, hver gang sitet bygges. Vil du vide, hvordan tiderne beregnes frem for hvordan de kontrolleres, står det på sådan beregner vi tiderne.
Sitets egne tider beregnes med suncalc, direkte i browseren. Kontrollen beregner de samme størrelser med astronomy-engine — et andet bibliotek, skrevet af andre mennesker, bygget på en anden model af Solsystemet.
Det er hele pointen. Kontrollerede vi suncalc med suncalc, ville vi kun bevise, at koden er konsistent med sig selv, hvilket den altid vil være. To uafhængige implementeringer kan derimod være uenige, og når de ikke er det, betyder enigheden noget. På solopgang og solnedgang ligger de to inden for 12 sekunder af hinanden.
Kontrollen er ikke en engangsgennemgang, men et script der kører som en del af hvert eneste build. Fejler det, bliver siden ikke udgivet. Det dækker:
En tolerance på nul lyder mest overbevisende, men ville være uærligt for de fleste af størrelserne. En formørkelses største fase er et øjeblik, der afhænger af, hvilken model man bruger for Månens bane, og to gode modeller kan lande et minut fra hinanden uden at nogen af dem tager fejl.
Derfor er tolerancen sat efter, hvad størrelsen faktisk kan bestemmes til: nul dage på en dato, minutter på en formørkelses faser, og en procent på dækningsgraden. En tolerance, der er sat løsere end det, holder op med at fange noget. En, der er sat strammere, fejler på støj — og et tjek, der fejler på støj, bliver slået fra, og tager de rigtige tjek med sig.
Kontrollen blev skrevet, fordi der var noget at fange. Alt herunder lå på sitet, var blevet læst igennem, og var forkert:
Ingen af dem er subtile, når man regner efter. De overlevede, fordi ingen regnede efter. Samtlige urskiftsdatoer for efteråret i tabellen over sommertid og vintertid var også forkerte — de faldt alle på en mandag, på en side hvis egen tekst siger «den sidste søndag i oktober».
Det vigtigste ved en nøjagtighedsangivelse er, hvor den holder op med at gælde.
Tal i løbende tekst kontrolleres ikke automatisk. Scriptet læser tabeller og datasæt. Skriver nogen et klokkeslæt midt i et afsnit, fanger kontrollen det ikke. Dem regner vi efter i hånden, når de skrives.
Horisonten er ikke flad. Alle tider gælder for en matematisk horisont ved havoverfladen. Står du i en dal, bag en bakke eller på tyvende etage, ser du solen gå ned på et andet tidspunkt end det beregnede — og forskellen er langt større end beregningens egen usikkerhed. Det er den væsentligste kilde til afvigelse for de fleste brugere.
Refraktion er et gennemsnit. Beregningen bruger standardværdien for, hvor meget atmosfæren bøjer lyset. Ved usædvanligt tryk eller temperatur afviger den virkelige brydning, og solen kan stå op et minut eller to fra det beregnede.
Vejret er ikke medregnet. Skyer flytter ikke solen, men de flytter det tidspunkt, hvor du kan se den.
Så vil vi gerne vide det. Et forkert tal, der bliver stående, er værre end et tal, vi aldrig havde skrevet. Skriv via kontaktsiden — gerne med sted og dato, så vi kan regne efter på præcis det tilfælde.
Sitets solopgangs- og solnedgangstider er beregnet med suncalc og stemmer overens med astronomy-engine, en uafhængig implementering, inden for 12 sekunder. Den reelle usikkerhed for en bruger er større end det og skyldes noget helt andet: højde over havet og terræn i horisonten. En bakke mod vest kan flytte den oplevede solnedgang flere minutter.
Sæsontabellerne for solhverv og jævndøgn, tidspunktet for hver måneformørkelses største fase, dens type og størrelse, samt kontakttider og dækningsgrad for hver by ved solformørkelser. Kontrollen kører ved hvert eneste build, og et build med et forkert tal fejler i stedet for at blive udgivet.
Fordi to kopier af samme kode altid er enige. Sitet regner med suncalc, mens kontrollen regner med astronomy-engine, som er skrevet uafhængigt og bygger på en anden model. Når de to er enige, siger det noget. Havde vi kontrolleret suncalc med suncalc, ville kontrollen kun bevise, at koden er konsistent med sig selv.