Skip to content

10 · Real-Data Demo — live from Cloudflare R2

Round 3 · Real data over the wire · data: real · streamed · 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.

  • Forecast / Truth / Difference maps on the v2 common grid (deck.gl BitmapLayer), where Difference is pairs on the fly: fcst − truth computed 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 .stat across all five precip thresholds.
  • DuckDB-WASM over Parquet: SQL over the full 1.53M-row .stat archive (8.8 MB Parquet) — e.g. RMSE vs lead by model — entirely client-side.
  • zarrita.js Zarr v3 reads with sharding-aware range requests.

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.js holds 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.