# .plan-26-45: Welcome to the House of Fun

*2026-11-08 — note*


<figure class="image-right-float"><img src="/images/w45-5.webp" alt="" title="" loading="lazy" srcset="/images/w45-5.768.webp 768w, /images/w45-5.640.webp 640w, /images/w45-5.480.webp 480w, /images/w45-5.320.webp 320w"><figcaption></figcaption></figure>
What a fun week! [Tessera](https://anil.recoil.org/projects/tessera) won the open source [software project of the year](https://anil.recoil.org/notes/openuk-tessera-award) at the OpenUK Awards in the House of Commons. I was very inspired to hear from Enrica Porcari of CERN who mentioned that we may be able to get tours inside the now-shut-down LHC, which I will drop anything to attend\!

Congratulations also to [Shane Weisz](https://shaneweisz.com) on his new preprint on how [local AI agents can now pass the IUCN Red List assessor exam](https://anil.recoil.org/notes/ai-red-list-exam). The headline result is that while frontier models comfortably clear the 75% pass mark at 96%, a self-hosted Qwen3.8 Flash on the Mac Studio on his desk _also_ passes with 81%. This opens up all sorts of offline field uses for sensitive species data.

It's also a wrap for my 1A [Foundations of Computer Science](https://anil.recoil.org/notes/focs) lecture course for this year. I very much enjoyed handing over to [Jon Sterling](https://jonmsterling.com), whose Discrete Maths course comes right after mine. Jon's also now lecturing [slide-free](https://www.jonmsterling.com/2026-W45/) and using the document camera to write down maths by hand. I'd [like](https://amok.recoil.org/@avsm/117586425001021630) to head in this direction next year and do more explanations by writing them down when teaching the basics.

<figure class="image-center"><img src="/images/w45-3.webp" alt="" title="" loading="lazy" srcset="/images/w45-3.768.webp 768w, /images/w45-3.640.webp 640w, /images/w45-3.480.webp 480w, /images/w45-3.3840.webp 3840w, /images/w45-3.320.webp 320w, /images/w45-3.2560.webp 2560w, /images/w45-3.1920.webp 1920w, /images/w45-3.1600.webp 1600w, /images/w45-3.1440.webp 1440w, /images/w45-3.1280.webp 1280w, /images/w45-3.1024.webp 1024w"><figcaption></figcaption></figure>

## Hacking for the week

### OxCaml 5.4.0+ox9 and my fomenting router rebellion

After [David Allsopp](https://www.dra27.uk) released a new revision of [OxCaml](https://anil.recoil.org/projects/oxcaml), I wrote up my analysis of [what changed in this OxCaml 5.4.0+ox9 release](https://anil.recoil.org/notes/oxcaml-ox9-improvements).
They include many performance-oriented features such as improved unboxed values, atomic fields, safer effects, and experimental layout and mode polymorphism. My [personal monorepo](https://tangled.org/anil.recoil.org/ox) is now pinned to ox9, and I also pushed a working odoc 3.2.2+ox to the [OxCaml opam repository](https://github.com/oxcaml/opam-repository/pull/67) with a matching [odoc PR](https://github.com/ocaml/odoc/pull/1520).

While messing around with deploying my website, I also got sufficiently [pissed off](https://x.com/avsm/status/2119425506047398099) by my household Netgear routers that were still running a 2018 (!) Linux that's [vulnerable to attack](https://thehackernews.com/2026/10/linux-kernel-tcp-flaw-with-98-cvss.html). So I also built a custom OpenWrt image with Linux 7.4-rc1, and bundled an OxCaml webserver with a Cap'n Proto endpoint running on the router itself. Wifi performance is now noticeably better on the new kernel (it is the latest one after all), and CLI management beats the vendor web UI by a mile.

### Eio sandbox escapes

I also fixed even more sandbox escapes in various Eio backends, with the
first one being a really surprising one reported by [Thomas Gazagnaire](https://github.com/samoht).
It involves a [trailing slash on a symlink](https://github.com/ocaml-multicore/eio/pull/967). A path like `foo/` should only ever refer to a directory, but the Eio POSIX backend treated the last component like a symlink it could follow. A link pointing outside the sandbox could therefore escape it by having a slash on the end. Argh! The fix treats `foo/` as `foo/.`, which forces `foo` to resolve as a directory.

I also opened up a [Windows PR with symlink and junction support](https://github.com/ocaml-multicore/eio/pull/968). I'm finding Windows filesystems extraordinarily complex to navigate, since they allow directory hardlinks ('junctions') and how these interact with the (relatively new) symlink support is the stuff of nightmares.

I also ran security scans over uring and opened up [more hardening for the OCaml bindings](https://github.com/ocaml-multicore/ocaml-uring/pull/167), which cover a number of edge cases.

## A custom Tangled spindle for auto CI

[Akshay Oppiliappan](https://oppi.li/) did get the big v2 upgrade of Tangled live, which meant I couldn't resist having a go at an OxCaml spindle so we can experiment with distributed workflows on ATProto at last\!

My first cut of a custom [Tangled](https://tangled.org) CI spindle is now [up and running](https://bsky.app/profile/anil.recoil.org/post/3mzsv34fb422u).  It uses [Andrew Nesbitt](https://nesbitt.io)'s [brief](https://github.com/git-pkgs/brief) project detector to probe the languages and toolchains in a repository and route it to the right workflow. This lets repositories get CI without writing a pipeline file, using the per-language metadata and guessing the right commands to run. There's OCaml and OxCaml support first of course, and I'm messing around with Python support via uv and pytest as the second route (e.g. for my Evidence TAP [parsosaur](https://tangled.org/anil.recoil.org/parsosaur) library which I'll talk more about later).

Behind the scenes of the spindle OCaml logic is a set of libraries to handle opam solving, and then it hands it off to our existing [OCluster](https://github.com/ocurrent/ocluster) Cap'n Proto submission system, so this interops really well with the existing GitHub infrastructure too and doesn't require duplicating all the runners.

I'll write up more on this in a separate post next week, as I'd also like to get [Michael Dales](https://mynameismwd.org) up and running with a LIFE pipeline to validate the use of this for larger jobs.

## Labels, DuckDB and a visitor

The [UK label map](https://anil.recoil.org/notes/2026w44) I started last week has now progressed to include 400+ data sources, all held in a single [DuckDB](https://duckdb.org) spatial index, and a tile server for raster tiles.
The hard part was harmonisation of the licences, as several datasets need clickthroughs; right now I'm keeping it private but tracking all these individually in each table.

<figure class="image-center"><img src="/images/w45-1.webp" alt="" title="" loading="lazy" srcset="/images/w45-1.768.webp 768w, /images/w45-1.640.webp 640w, /images/w45-1.480.webp 480w, /images/w45-1.320.webp 320w, /images/w45-1.2560.webp 2560w, /images/w45-1.1920.webp 1920w, /images/w45-1.1600.webp 1600w, /images/w45-1.1440.webp 1440w, /images/w45-1.1280.webp 1280w, /images/w45-1.1024.webp 1024w"><figcaption></figcaption></figure>
<figure class="image-center"><img src="/images/w45-2.webp" alt="" title="" loading="lazy" srcset="/images/w45-2.768.webp 768w, /images/w45-2.640.webp 640w, /images/w45-2.480.webp 480w, /images/w45-2.320.webp 320w, /images/w45-2.2560.webp 2560w, /images/w45-2.1920.webp 1920w, /images/w45-2.1600.webp 1600w, /images/w45-2.1440.webp 1440w, /images/w45-2.1280.webp 1280w, /images/w45-2.1024.webp 1024w"><figcaption></figcaption></figure>

While I'm assembling all these, I was also delighted to meet [Tom Loosemore](https://loosemore.com/) in Cambridge after many years, for an invigorating plotting session. Tom has been an inspiration to me since [Up My Street](https://upmystreet.org/about) back in 1998, and his pioneering work establishing the UK Government Digital Service.

<figure class="image-right-float"><img src="/images/w45-4.webp" alt="" title="" loading="lazy" srcset="/images/w45-4.768.webp 768w, /images/w45-4.640.webp 640w, /images/w45-4.480.webp 480w, /images/w45-4.3840.webp 3840w, /images/w45-4.320.webp 320w, /images/w45-4.2560.webp 2560w, /images/w45-4.1920.webp 1920w, /images/w45-4.1600.webp 1600w, /images/w45-4.1440.webp 1440w, /images/w45-4.1280.webp 1280w, /images/w45-4.1024.webp 1024w"><figcaption></figcaption></figure>
Tom's [recently](https://loosemore.com) been exploring how personal AI agents could be useful for normal people, like his [bin-collection site](https://loosemore.com/2026/10/09/how-agents-show-up-what-muse-and-other-agents-reveal-when-they-use-whenisbins/) and what data they leak about you\!
He's also been conducting [user research](https://loosemore.com/2026/11/09/user-research-with-ai-agents-to-disprove-a-hypothesis/) using agents, which struck me as a similar approach to the DeepMind [Concordia](https://github.com/google-deepmind/concordia) simulations from our [ARIA ecosystem resilience workshop](https://anil.recoil.org/notes/foundational-ecosystem-workshop) last year.
He's also encouraging those developing public services to prepare for the looming impact when [agents arrive en masse](https://loosemore.com/2026/10/26/here-be-dragons/):

> Those running public services should be considering what they can do to shape
> how agents engage with their services. Do not wait for them to arrive en
> mass. You may dismiss my anxieties as premature, since there are minuscule
> numbers of people using AI agents in the UK at the moment. Remember
> Hemingway’s quotation on being asked how he went bankrupt: “Two ways.
> Gradually, then suddenly.”
> <cite>\-- [Here be dragons, Tom Loosemore, 2026](https://loosemore.com/2026/10/26/here-be-dragons/)</cite>


## Evidence TAPosaur

I've been continuing to develop the latest version of the Taposaur website
for internal use, as a growing number of colleagues such as [Andrea Manica](https://www.zoo.cam.ac.uk/people/andrea-manica)
and Neil Burgess from UNEP-WCMC are querying our metadata for various research tasks.

Now that we have around 30m fulltexts, the next phase is to finish mirroring OpenAlex's PDF
connection (~80m) and doing a run through [Parsosaur](https://tangled.org/anil.recoil.org/parsosaur)
to get reliable TEI XML metadata. I'll talk more about this stack in the coming weeks, as we're
running it over our classic [Conservation Evidence](https://anil.recoil.org/projects/ce) butterflies and moths review corpus.

<figure class="image-center"><img src="/images/w45-6.webp" alt="" title="" loading="lazy" srcset="/images/w45-6.768.webp 768w, /images/w45-6.640.webp 640w, /images/w45-6.480.webp 480w, /images/w45-6.320.webp 320w, /images/w45-6.2560.webp 2560w, /images/w45-6.1920.webp 1920w, /images/w45-6.1600.webp 1600w, /images/w45-6.1440.webp 1440w, /images/w45-6.1280.webp 1280w, /images/w45-6.1024.webp 1024w"><figcaption></figcaption></figure>

## Rex as a daily driver

I got into the closed beta for [Rex](https://superlogical.com) from Superlogical last week and it has totally become my default terminal. It's a terminal multiplexer that instantly resumes connections. Its notification system tells me when a remote pty is waiting for input (or has finished), and sessions can be named and grouped logically.
A cool side effect is that my coding agents now rename their own Rex session to describe the task they're working on, so the sidebar is a handy project todo list. I'm regularly SSHed into over 10 servers these days so the instant resume is also very cool\!

## Links around the web

I spent the weekend hacking on the [Android Tessera labelling app](https://anil.recoil.org/notes/2026w43) for [Julia P.G. Jones](https://www.bangor.ac.uk/staff/sens/julia-patricia-gordon-jones-010356/en), and she now has it working on her phone for her Madagascar field trip. She is currently en route to the rainforests with [Miranda Lam](https://www.linkedin.com/in/miranda-lam-a088561b4) to try it out against real habitats\!

Finley Stirk's weeknotes now have an [Atom feed](https://finleystirk.github.io/weeknotes/feed.xml)\!

Next week: I'm giving an IUCN webinar on Tessera with [David Coomes](https://coomeslab.org), so come along if you're free\!

<figure class="image-center"><img src="/images/iucn-webinar26.webp" alt="" title="" loading="lazy" srcset="/images/iucn-webinar26.768.webp 768w, /images/iucn-webinar26.640.webp 640w, /images/iucn-webinar26.480.webp 480w, /images/iucn-webinar26.320.webp 320w, /images/iucn-webinar26.1920.webp 1920w, /images/iucn-webinar26.1600.webp 1600w, /images/iucn-webinar26.1440.webp 1440w, /images/iucn-webinar26.1280.webp 1280w, /images/iucn-webinar26.1024.webp 1024w"><figcaption></figcaption></figure>

## References

1. Madhavapeddy (2025). Foundations of Computer Science. <https://doi.org/10.59350/qms3q-ymn65>
2. Madhavapeddy (2026). Checking out the latest features in OxCaml 5.4.0+ox9. <https://doi.org/10.59350/r852a-fja33>
3. Madhavapeddy (2026). .plan-26-44: Commons People. <https://doi.org/10.59350/94p1z-tk116>
4. Madhavapeddy (2025). Foundational AI for Ecosystem Resilience workshop. <https://doi.org/10.59350/26hy6-rry61>

Synopsis: Tessera wins the OpenUK software award, local AI agents pass the Red List exam, FoCS lecturing wraps up, OxCaml ox9 and an OpenWrt router rebellion, Eio sandbox fixes, a brief-powered Tangled spindle, a DuckDB index of UK labels, Tom Loosemore on personal agents, Taposaur, Rex, and a Madagascar field app.
Words: 1271

## Related

- [User research with AI Agents to disprove a hypothesis](https://loosemore.com/2026/11/09/user-research-with-ai-agents-to-disprove-a-hypothesis/) (feed, 2026-11-09)
  Tom Loosemore. I&#8217;ve recently been playing with a bunch of personal AI agents such as Meta&#8217;s Muse, Claude&#8217;s Duet, Instinct and Openclaw. I&#8217;m learning a lot about how they tend to behave, both from the perspective of a user, but also as a service owner via my WhenIsBins.com agentic testbed. F…
- [Tessera wins the OpenUK software of the year award](https://anil.recoil.org/notes/openuk-tessera-award) (note, 2026-11-06)
  Tessera wins the open source software project of the year at the 7th OpenUK Awards in the House of Commons.
- [Checking out the latest features in OxCaml 5.4.0+ox9](https://anil.recoil.org/notes/oxcaml-ox9-improvements) (note, 2026-11-06)
  What changed between OxCaml 5.2.0+minus39 and 5.4.0+ox9, covering unboxed values, atomic fields, safer effects, and experimental polymorphism over layouts and modes.
- [Weeknotes 2026-W45](https://www.jonmsterling.com/2026-W45/) (feed, 2026-11-04)
  Jon Sterling. Finishing up POPL revisions!To my surprise, my paper Bidirectional Elaborators à la Carte with Andrew Slattery was rejected in the end from POPL 2027 because in the last moment, the reviewers discovered an error in one of the theorems concerning untyped \eta -conversion that shook their confidence …
- [Local AI agents can now pass the IUCN Red List assessor exam](https://anil.recoil.org/notes/ai-red-list-exam) (note, 2026-11-03)
  New preprint evaluating frontier and local AI agents on the IUCN Red List assessor exam, and finding that open-weight models on a desktop now clear the pass mark.
- [.plan-26-44: Commons People](https://anil.recoil.org/notes/2026w44) (note, 2026-11-01)
  Keynoted the OpenUK Space Tech Radar launch with Tessera shortlisted for an OpenUK award, building a UK label map for Tessera from open government data, Tangled upgrades towards a data commons, new Part II weeknoters, Pembroke recaps, a ZoologyCon practice talk, and rules for AI in academic writing.
- [Here be dragons](https://loosemore.com/2026/10/26/here-be-dragons/) (feed, 2026-10-26)
  Tom Loosemore. As you know, I&#8217;m somewhat obsessed about the arrival of personal AI Agents, like Meta&#8217;s Muse. They&#8217;ve been a possibility that has excited me since I was an editor at Wired in the mid-1990s. What was once just conceptual is now very real, and seems to be proving popular. Over 10m pe…
- [.plan-26-43: Wireguard meshes over troubled water](https://anil.recoil.org/notes/2026w43) (note, 2026-10-25)
  Forester toplevels are working well in FoCS lectures, a smooth Patch the Planet week with Trail of Bits, and drowning in security reports.
- [How Agents Show Up: What Muse and other agents reveal when they use WhenIsBins](https://loosemore.com/2026/10/09/how-agents-show-up-what-muse-and-other-agents-reveal-when-they-use-whenisbins/) (feed, 2026-10-09)
  Tom Loosemore. WhenIsBins.com tells you when your bins are collected. I built it partly to show Public Digital&#8216;s clients that LLMs change how you make services, and partly as an agentic playpen. It&#8217;s a real, live service with a website, an API and an MCP server, where we can watch how AI agents actuall…
- [Foundational AI for Ecosystem Resilience workshop](https://anil.recoil.org/notes/foundational-ecosystem-workshop) (note, 2025-12-03)
  Workshop report combining TESSERA geospatial foundation models with Concordia agent-based modeling to simulate ecosystem resilience, covering causal modeling for ecology and AI applications in nature conservation.
- [Foundations of Computer Science](https://anil.recoil.org/notes/focs) (note, 2025-01-03)
  Resources for teaching Foundations of Computer Science with OCaml and Jupyter notebooks.
- [OxCaml Labs](https://anil.recoil.org/projects/oxcaml) (project, 2025-01-01)
- [TESSERA, a pixelwise geospatial foundation model](https://anil.recoil.org/projects/tessera) (project, 2025-01-01)
- [Conservation Evidence Copilots](https://anil.recoil.org/projects/ce) (project, 2024-01-01)

---
Canonical: https://anil.recoil.org/notes/2026w45
Type: note
License: CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>
Tags: tessera, oxcaml, tangled, teaching, conservation
