# .plan-26-22: From digital rewilding in Edinburgh to uring and Tessera hackery

*2026-05-31 — note*


Most of this week was either off for the May bank-holiday long weekend or up in Edinburgh at this [great workshop](https://anil.recoil.org/notes/rewilding-the-web-report), with plenty of hacking on the long train journeys in between.

## Rewilding the Web in Edinburgh

[Jon Crowcroft](mailto:jon.crowcroft@cl.cam.ac.uk) and I went up to Edinburgh for Kate Nave's *Rewilding the Web: Diversity & Resilience in Sociotechnical Infrastructure* workshop, an interdisciplinary mix of economists, ecologists, philosophers, techies and authors. The notes are in the [workshop report](https://anil.recoil.org/notes/rewilding-the-web-report).

I came back with a huge reading list, learnt the word "coopetition", and gathered a giant list of follow-ups from our [Internet ecology paper](https://anil.recoil.org/papers/2025-internet-ecology). Jon and I did a double act on antibotty networks and code self-modification, and -- unlike the response six months ago at Aarhus -- nobody in the room treated it as sci-fi. The shift on coding agents into the mainstream is happening fast.

<figure class="image-center"><img src="/images/26w22-ed-1.webp" alt="Wander Edinburgh University" title="Wander Edinburgh University" loading="lazy" srcset="/images/26w22-ed-1.768.webp 768w, /images/26w22-ed-1.640.webp 640w, /images/26w22-ed-1.480.webp 480w, /images/26w22-ed-1.3840.webp 3840w, /images/26w22-ed-1.320.webp 320w, /images/26w22-ed-1.2560.webp 2560w, /images/26w22-ed-1.1920.webp 1920w, /images/26w22-ed-1.1600.webp 1600w, /images/26w22-ed-1.1440.webp 1440w, /images/26w22-ed-1.1280.webp 1280w, /images/26w22-ed-1.1024.webp 1024w"><figcaption>Wander Edinburgh University</figcaption></figure>

## ocaml-uring refreshes

[Thomas Leonard](https://github.com/https://roscidus.com) is back [hacking on eio](https://notes.roscidus.com/2026/05/24/) and working through the PR backlog (`Unix.file_descr` conversion to lose `Obj.magic`, MDX hang detection, a big liburing 2.14 update to get the latest goodies).
Spurred on by all this activity, I spent a chunk of the week filling in some coverage gaps so I can start using uring again in my TESSERA code. My [PR \#147](https://github.com/ocaml-multicore/ocaml-uring/pull/147) adds bindings for `shutdown`, `socket`, `renameat` and `symlinkat`.

The other PR is smaller but highlights a slightly more obscure API in Linux. [PR \#142](https://github.com/ocaml-multicore/ocaml-uring/pull/142) fixes a bug where the supported-attribute check for `statx` was inverted. Eio doesn't currently use that code path so we hadn't noticed. `statx` is a slightly odd syscall: it negotiates which attributes the kernel will fill in via a request-mask / returned-mask handshake, and it's easy to get the boolean direction wrong on the OCaml side. It's also not entirely clear under what conditions the kernel will let this mask get out of sync from the request...

## GeoTessera 0.9 and a HuggingFace home for the models

On the [TESSERA](https://anil.recoil.org/projects/tessera) side, I've been getting [GeoTessera 0.9](https://github.com/ucam-eo/geotessera/pull/250) ready to land. The release does two things: it migrates the embeddings host from our Cambridge infrastructure to `s3://tessera-embeddings/` on AWS `us-west-2` (the [AWS Open Data sync](https://anil.recoil.org/notes/2026w17) that [Mark Elvers](https://www.tunbury.org/) and I have been doing), and adds support for our forthcoming TESSERA v1.1 model alongside the existing v1.0.

Since we're now on S3, we've dropped the SHA256-based registry in favour of
S3's built-in `x-amz-checksum-crc64nvme` header, which simplifies the integrity
check and lets us simplify the existing download path. The `geotessera-registry
s3scan` tool now auto-discovers every `(version, variant, year)` under any S3
prefix and shards the listing by longitude. A one-year scan went from ~11
minutes to ~47 seconds, which makes regenerating the manifests cheap enough to
do routinely. Cache freshness now also uses ETag / `If-None-Match` in addition
to `If-Modified-Since`, so clients won't miss updates when local mtime drifts.

To prepare for the v1.1 release, I opened up a new [geotessera org on Hugging Face](https://huggingface.co/geotessera) and uploaded model cards for [TESSERA-V-1.0](https://huggingface.co/geotessera/TESSERA-V-1.0) and [TESSERA-V-1.1](https://huggingface.co/geotessera/TESSERA-V-1.1). The card format follows the [geospatial embeddings model card template](https://geoembeddings.org/model-card.html) that came out of the [Clark University embeddings sprint](https://anil.recoil.org/notes/2026w12) earlier in the spring. [Madeline Lisaius](https://mlisaius.github.io/) did a lot of the work pulling that template together, and it's good to see the community standard land on something concrete that other model authors can reuse\!

Most users will continue to pull pregenerated embeddings via the GeoTessera library rather than the raw weights, but having a canonical HF home for the model itself was overdue.

I'll post properly about v1.1 once the release is fully out. The v1.0-v1.1
transition is a no-op for downstream code since you just point at a
new manifest and grab new embeddings. Users should just see their performance
increase without any effort, as the model backing the embeddings has improved\!

## Fun Links

- [Jane Street on strace\_tui](https://blog.janestreet.com/strace-ui-bonsai-term-and-the-tui-renaissance/) got me to refresh my own [Bonsai code](https://anil.recoil.org/notes/aoah-2025-9) and get it running under oi. Working for me but still polishing for release\!
- Started reading through more [geocaml](https://github.com/geocaml) code after seeing [the Lidar viewer](https://digitalflapjack.com/weeknotes/geocaml-hacking/).
- I gotta tidy up my bleeding edge [oxcaml-httpz](https://anil.recoil.org/notes/oxcaml-httpz) code for [others to use](https://digitalflapjack.com/weeknotes/webbplats-update/) in their site. Something for next week\!
- Learnt a lot about how [power transformers work](https://mcj.vc/inevitable-podcast/dg-matrix) in the latest MCJ podcast.
Synopsis: Rewilding the Web workshop in Edinburgh, an OCaml io_uring binding refresh, and GeoTessera 0.9 moves the embeddings to AWS alongside a fresh HuggingFace org.
Words: 701

## Related

- [Rewilding the Web: my workshop report from Edinburgh](https://anil.recoil.org/notes/rewilding-the-web-report) (note, 2026-05-30)
- [.plan-26-17: Unwedging kernels, dogfood deployments, and managing beef leakage](https://anil.recoil.org/notes/2026w17) (note, 2026-04-26)
- [.plan-26-12: Zarr across space and TESSERA time](https://anil.recoil.org/notes/2026w12) (note, 2026-03-22)
- [My (very) fast zero-allocation webserver using OxCaml](https://anil.recoil.org/notes/oxcaml-httpz) (note, 2026-02-01)
- [AoAH Day 9: Adding a Bonsai terminal UI to Sortal](https://anil.recoil.org/notes/aoah-2025-9) (note, 2025-12-09)
- [Steps towards an Ecology for the Internet](https://anil.recoil.org/papers/2025-internet-ecology) (paper, 2025-08-01)
- [TESSERA, a pixelwise geospatial foundation model](https://anil.recoil.org/projects/tessera) (project, 2025-01-01)

---
Canonical: https://anil.recoil.org/notes/2026w22
Type: note
Tags: ocaml, linux, eio, tessera, geotessera, aws, huggingface, philosophy
