10 · Real-Data Demo — live from Cloudflare R2
Round 3 · Real data over the wire · data: · reimagines METdataio + METviewer (serverless)
The networked app: real, de-identified MET data streamed from a private R2 bucket
through a gated Worker (met-al-data-proxy — Range/206 reads, CORS, origin allowlist, no
SSO). Nothing is bulk-downloaded; the browser range-reads exactly the chunks each view needs.
What it demonstrates
Section titled “What it demonstrates”- Forecast / Truth / Difference maps on the v2 common grid (deck.gl BitmapLayer), where
Difference is pairs on the fly:
fcst − truthcomputed live in the client with running bias/RMSE/MAE — no stored pairs files at all. - Parity panel: recomputes MET’s 2×2 contingency from a small de-identified oracle and
shows bit-identical CTC counts against MET’s
.statacross all five precip thresholds. - DuckDB-WASM over Parquet: SQL over the full 1.53M-row
.statarchive (8.8 MB Parquet) — e.g. RMSE vs lead by model — entirely client-side. - zarrita.js Zarr v3 reads with sharding-aware range requests.
The v2 store behind it
Section titled “The v2 store behind it”stores/web-demo-v2.zarr (83 MB, 255 objects, zero identifying metadata): forecasts
(model, cycle, lead, y, x) with whole-frame chunks (bitround + shuffle + zstd), lossless
truth keyed by valid time, 1e30 fill, 2-D lat/lon, and a 6-case parity oracle. Conversion
cost ~7.9 s on top of the (dominant, one-time) GRIB2 decode. See
Cloud-native pipeline.
config.jsholds the Worker URL and supports a?local=<base>override for development; a graceful banner appears if the store is unreachable.- Intentionally no single-file build — streaming is the point.
