# .plan-26-35: All I want for Tesseramas is (GP)U

*2026-08-30 — note*


I've been in Ireland again this week for the bank holiday, which also saw us celebrate [a year of Tessera hacking](#a-year-of-tessera-embeddings) while hunting for more GPUs to support our users' embedding requests. I also got [Scrutineer scanning my own code](#scrutineer-scanning-with-a-local-glm) using a local GLM-5.3 model, the [PROPL 2026 videos are live](#propl-2026-videos-are-live), and I wrote a [text and data mining reservations library](#tdm-reservations-for-evidence-tap) for [Evidence TAP](https://evidencetap.org). Meanwhile, [Ryan Gibb](https://ryan.freumh.org) flew the flag for [our ICFP 2026 paper](#papers) over in Indiana.

## A year of Tessera embeddings

It's been a whole year since the first GeoTessera release, woohoo! I [put together a brief recap](https://anil.recoil.org/notes/geotessera-a-year-on) and released [GeoTessera 0.10](https://github.com/ucam-eo/geotessera/releases/tag/v0.10.0), which moves our hosting over to the [Source Cooperative](https://source.coop/) with UTM-native Zarr routing and Matryoshka reads for the v2 beta.

<a href="https://www.cl.cam.ac.uk/~avsm2/embedding_requests_map.html"> <figure class="image-center"><img src="/images/embedding_requests_map.gif" alt="A year of public TESSERA embedding requests, in the order they were filed" title="A year of public TESSERA embedding requests, in the order they were filed" loading="lazy"><figcaption>A year of public TESSERA embedding requests, in the order they were filed</figcaption></figure> </a>

The sync of the [Tessera v1.1 embeddings](https://anil.recoil.org/notes/tessera-v11-out) onto the Source Cooperative also finished this week, so those are now browsable via [tze.geotessera.org](https://tze.geotessera.org) as well (click on the model version on the top right). The full global run for v1.1 for 2017-2025 has unfortunately been delayed by a month due to GPU shortages. If you can help us get access to more GPUs then please get in touch. Smaller cards are fine, since we can parallelise the inference across many of them per tile. [Mark Elvers](https://www.tunbury.org/) has [mostly finished the v2 inference ablations](https://www.tunbury.org/2026/08/31/week-35-2025/), so compute is now what we're short of.

<a href="https://tze.geotessera.org/?store=v1.1"> <figure class="image-center"><img src="/images/tze-explorer-v1.1-ss-1.webp" alt="The green false colour shows the expanded v1.1 coastal tiles, which now capture all of the UK including islands" title="The green false colour shows the expanded v1.1 coastal tiles, which now capture all of the UK including islands" loading="lazy" srcset="/images/tze-explorer-v1.1-ss-1.768.webp 768w, /images/tze-explorer-v1.1-ss-1.640.webp 640w, /images/tze-explorer-v1.1-ss-1.480.webp 480w, /images/tze-explorer-v1.1-ss-1.320.webp 320w, /images/tze-explorer-v1.1-ss-1.2560.webp 2560w, /images/tze-explorer-v1.1-ss-1.1920.webp 1920w, /images/tze-explorer-v1.1-ss-1.1600.webp 1600w, /images/tze-explorer-v1.1-ss-1.1440.webp 1440w, /images/tze-explorer-v1.1-ss-1.1280.webp 1280w, /images/tze-explorer-v1.1-ss-1.1024.webp 1024w"><figcaption>The green false colour shows the expanded v1.1 coastal tiles, which now capture all of the UK including islands</figcaption></figure> </a>

Relatedly, I read a nice paper on the [temporal sensitivity of Tessera embeddings](https://arxiv.org/abs/2608.27175). The authors keep the Tessera encoder frozen and recompute its embeddings over successively shorter observation windows, from a full year (which is what we generate by default) right down to a single day (!). They then benchmark linear probes and UNet heads against from-scratch networks on various datasets.

Interestingly, accuracy degrades gradually rather than collapsing. Contracting the temporal window from a year down to a month drops 39% of the segmentation accuracy on the phenology-driven PASTIS-R crop task. I was surprised to see that even single-day embeddings classify land cover at 3.4 times the background chance baseline, so temporal coverage seems practical to tune if you're willing to pay the inference cost.

> The benefit of using embeddings is more evident when labels are scarce: with
> only 1% of the labels TESSERA-UNet already achieves ∼24 mIoU on PASTIS-R,
> some 50% above the best from-scratch UNet, and even the linear probe matches
> or exceeds every fully supervised from-scratch UNet there, while on DEN the
> embedding-based models stay essentially flat from 1% of the labels onwards
> and the from-scratch UNets only catch up between 30% and 100%, so the models
> only draw level on DEN at saturation. The embeddings thus pay off whenever
> the mapping task is phenology-driven or labels are scarce, and lose their
> edge only when it is spectral and labels are abundant, a combination rarely
> met in operational LULC production.
> <cite>\-- [Temporal Sensitivity Analysis of Tessera Embeddings](https://arxiv.org/abs/2608.27175), Julia Guerrero-Viu et al, Aug 2026</cite>

I also wrote up some project ideas this week in preparation for the incoming MPhil students to Cambridge, covering [scanning the literature for species range and habitat maps](https://anil.recoil.org/ideas/literature-range-habitat-maps), the [generative detection of all the ghost roads in the world](https://anil.recoil.org/ideas/tessera-ghost-roads), and the [interpretable downscaling of local weather predictions](https://anil.recoil.org/ideas/tessera-interpretable-downscaling). I'll write more about these next week when back in Cambridge.

## Scrutineer scanning with a local GLM

My [musings on security embargoes](https://anil.recoil.org/notes/rumour-is-the-exploit) were covered pretty widely online, with discussions on [HN](https://news.ycombinator.com/item?id=49480466) and [Lobsters](https://lobste.rs/s/t73wqi/just_rumour_bug_is_enough_find_security). I loved seeing [Nick Craig-Wood participate](https://news.ycombinator.com/item?id=49480777), as he maintains [rclone](https://rclone.org/) which we [use extensively to manage filesync in the EEG](https://www.tunbury.org/2026/01/06/ceph-notes/#copying-data). The rclone project fielded around 20 security disclosures in its first decade, and now 40+ in the last month alone. He's now considering merging security fixes straight to trunk, rather than holding embargoed branches. The Lobsters thread also pointed me at the [Zero Day Clock](https://zerodayclock.com/), which is a depressingly incredible graph.

<a href="https://zerodayclock.com/"> <figure class="image-center"><img src="/images/zeroday-clock.webp" alt="The Zero day clock to exploitation" title="The Zero day clock to exploitation" loading="lazy" srcset="/images/zeroday-clock.768.webp 768w, /images/zeroday-clock.640.webp 640w, /images/zeroday-clock.480.webp 480w, /images/zeroday-clock.320.webp 320w, /images/zeroday-clock.1920.webp 1920w, /images/zeroday-clock.1600.webp 1600w, /images/zeroday-clock.1440.webp 1440w, /images/zeroday-clock.1280.webp 1280w, /images/zeroday-clock.1024.webp 1024w"><figcaption>The Zero day clock to exploitation</figcaption></figure> </a>

As a followup, I deployed [Andrew Nesbitt](https://nesbitt.io)'s Scrutineer to scan my own OCaml code, but driven by GLM 5.3 running on my Mac Studio rather than a commercial code model. I wrote up quick [notes on the deployment](https://anil.recoil.org/notes/scrutineer-local-llm). The short version is it's surfacing hundreds of potential findings to triage, so there's some work ahead. [Thomas Gazagnaire](https://github.com/samoht) is giving me a hand though\!

<figure class="image-center"><img src="/images/scrutineer-ss-5.webp" alt="Scrutineer's triage view of an example harmless finding in cohttp" title="Scrutineer's triage view of an example harmless finding in cohttp" loading="lazy" srcset="/images/scrutineer-ss-5.768.webp 768w, /images/scrutineer-ss-5.640.webp 640w, /images/scrutineer-ss-5.480.webp 480w, /images/scrutineer-ss-5.320.webp 320w, /images/scrutineer-ss-5.2560.webp 2560w, /images/scrutineer-ss-5.1920.webp 1920w, /images/scrutineer-ss-5.1600.webp 1600w, /images/scrutineer-ss-5.1440.webp 1440w, /images/scrutineer-ss-5.1280.webp 1280w, /images/scrutineer-ss-5.1024.webp 1024w"><figcaption>Scrutineer's triage view of an example harmless finding in cohttp</figcaption></figure>

To support this, I refreshed my [ocaml-deepseek](https://tangled.org/anil.recoil.org/ocaml-deepseek) inference engine, which I first built for [language-integrated LLMs](https://anil.recoil.org/notes/language-integrated-llms) but am now exposing as a server. It is now renamed `ds4` to match the upstream project, and the `glm-5.3` branch serves GLM 5.3 Flash over an OpenAI-compatible endpoint for Scrutineer to use.

## Papers and PROPL

I finished my [POPL 2027](https://popl27.sigplan.org) paper reviews this week, yay\!

The recordings from the 3rd [Programming for the Planet](https://pldi26.sigplan.org/home/propl-2026) workshop at PLDI 2026 are now up on the ACM SIGPLAN [YouTube playlist](https://www.youtube.com/playlist?list=PLXeET4GjfkHs), and of course also on our self-hosted [Watch EEG](https://watch.eeg.cl.cam.ac.uk). I wrote up [the talks and thoughts](https://anil.recoil.org/notes/pldi26-propl), and am very excited that [Cyrus Omar](https://web.eecs.umich.edu/~comar/) is visiting Cambridge on sabbatical for the year\!

<div class="video-center"><iframe title="Cyrus Omar sets the scene for the third PROPL" width="100%" height="315px" src="https://watch.eeg.cl.cam.ac.uk/videos/embed/cf84d09f-1ce0-4212-b3a3-2ccee3fa5622" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe></div>

[Ryan Gibb](https://ryan.freumh.org) also presented our ICFP 2026 paper on [a formal model of dependency resolution](https://anil.recoil.org/papers/2026-package-calculus) in Indiana this week. You can watch his talk on the [conference livestream](https://www.youtube.com/live/wn88R35yqeY?t=9098s). There are some exciting followups brewing, around whether we can use [event structures](https://arxiv.org/abs/2107.01542) and other tricks to make the underlying package calculus vastly faster to traverse and solve.

<a href="https://www.youtube.com/live/wn88R35yqeY?t=9098s"> <figure class="image-center"><img src="/images/icfp26-ryan-pac.webp" alt="Ryan Gibb presenting our package management formalism at ICFP 2026" title="Ryan Gibb presenting our package management formalism at ICFP 2026" loading="lazy" srcset="/images/icfp26-ryan-pac.768.webp 768w, /images/icfp26-ryan-pac.640.webp 640w, /images/icfp26-ryan-pac.480.webp 480w, /images/icfp26-ryan-pac.320.webp 320w, /images/icfp26-ryan-pac.1920.webp 1920w, /images/icfp26-ryan-pac.1600.webp 1600w, /images/icfp26-ryan-pac.1440.webp 1440w, /images/icfp26-ryan-pac.1280.webp 1280w, /images/icfp26-ryan-pac.1024.webp 1024w"><figcaption>Ryan Gibb presenting our package management formalism at ICFP 2026</figcaption></figure> </a>

## TDM reservations for Evidence TAP

The Evidence TAP database is up to ~20 million fulltexts now, thanks to an import from Semantic Scholar as well as the download engine continuing to get education and conservation fulltexts.

I also published [ocaml-tdmrep](https://tangled.org/anil.recoil.org/ocaml-tdmrep), an OCaml implementation of the W3C [TDM Reservation Protocol](https://www.w3.org/community/reports/tdmrep/CG-FINAL-tdmrep-20240202/), to help ensure the literature downloader respects publishers' machine-readable text-and-data-mining reservations while crawling open access versions.

## Fun links

- [Aneesh Naik](https://aneeshnaik.github.io/) pointed me at some addictive guessing games. My favourite was [Redactle](https://redactle.net/), in which you have to figure out a Wikipedia article's name from its redacted contents.
- An interesting paper on [using drones to improve absence data for pika burrows](https://www.sciencedirect.com/science/article/pii/S1470160X26001329) to help improve SDMs (which really need absence data for MaxEnt techniques to be effective). I both love pikas and am thinking about [GeoFM+SDMs](https://www.aneeshnaik.com/blogposts/20260831_weeknotes_2026_35.html) so this was a cool read.
Synopsis: Tessera v1.1 now also synced to Source Cooperative but we're short on GPUs for v2, Scrutineer security scans driven by a local GLM, PROPL 2026 videos are live, and TDM reservations in OCaml for Evidence TAP.
Words: 1099

## Related

- [Security scanning my own code with Scrutineer and local coding models](https://anil.recoil.org/notes/scrutineer-local-llm) (note, 2026-08-31)
- [The 3rd Programming for the Planet 2026 videos are available](https://anil.recoil.org/notes/pldi26-propl) (note, 2026-08-28)
- [Celebrating a year of Tessera embeddings and releasing GeoTessera 0.10](https://anil.recoil.org/notes/geotessera-a-year-on) (note, 2026-08-27)
- [Introduction (PROPL 2026)](https://anil.recoil.org/videos/cf84d09f-1ce0-4212-b3a3-2ccee3fa5622) (video, 2026-08-26)
- [Just a rumour of a bug is enough to find a security exploit these days](https://anil.recoil.org/notes/rumour-is-the-exploit) (note, 2026-08-22)
- [Package Managers à la Carte: A Formal Model of Dependency Resolution](https://anil.recoil.org/papers/2026-package-calculus) (paper, 2026-08-01)
- [Scanning the literature for species range and habitat maps](https://anil.recoil.org/ideas/literature-range-habitat-maps) (idea, 2026-08-01)
- [Generative detection of ghost roads with Tessera embeddings](https://anil.recoil.org/ideas/tessera-ghost-roads) (idea, 2026-08-01)
- [Interpretable downscaling of local weather predictions](https://anil.recoil.org/ideas/tessera-interpretable-downscaling) (idea, 2026-08-01)
- [Language integrated LLMs as an OCaml function](https://anil.recoil.org/notes/language-integrated-llms) (note, 2026-06-14)
- [Tessera v1.1 released, with smoother and temporally stable embeddings](https://anil.recoil.org/notes/tessera-v11-out) (note, 2026-06-12)

---
Canonical: https://anil.recoil.org/notes/2026w35
Type: note
License: CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>
Tags: tessera, security, ocaml, ai, sdms, biodiversity
