
Congratulations also to Shane Weisz on his new preprint on how local AI agents can now pass the IUCN Red List assessor 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 lecture course for this year. I very much enjoyed handing over to Jon Sterling, whose Discrete Maths course comes right after mine. Jon's also now lecturing slide-free and using the document camera to write down maths by hand. I'd like to head in this direction next year and do more explanations by writing them down when teaching the basics.

1 Hacking for the week
1.1 OxCaml 5.4.0+ox9 and my fomenting router rebellion
After David Allsopp released a new revision of OxCaml, I wrote up my analysis of what changed in this OxCaml 5.4.0+ox9 release. They include many performance-oriented features such as improved unboxed values, atomic fields, safer effects, and experimental layout and mode polymorphism. My personal monorepo is now pinned to ox9, and I also pushed a working odoc 3.2.2+ox to the OxCaml opam repository with a matching odoc PR.
While messing around with deploying my website, I also got sufficiently pissed off by my household Netgear routers that were still running a 2018 (!) Linux that's vulnerable to attack. 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.
1.2 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.
It involves a trailing slash on a symlink. 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. 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, which cover a number of edge cases.
2 A custom Tangled spindle for auto CI
Akshay Oppiliappan 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 CI spindle is now up and running. It uses Andrew Nesbitt's 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 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 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 up and running with a LIFE pipeline to validate the use of this for larger jobs.
3 Labels, DuckDB and a visitor
The UK label map I started last week has now progressed to include 400+ data sources, all held in a single DuckDB 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.


While I'm assembling all these, I was also delighted to meet Tom Loosemore in Cambridge after many years, for an invigorating plotting session. Tom has been an inspiration to me since Up My Street back in 1998, and his pioneering work establishing the UK Government Digital Service.

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.” -- Here be dragons, Tom Loosemore, 2026
4 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 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 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 butterflies and moths review corpus.

5 Rex as a daily driver
I got into the closed beta for Rex 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!
6 Links around the web
I spent the weekend hacking on the Android Tessera labelling app for Julia P.G. Jones, 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 to try it out against real habitats!
Finley Stirk's weeknotes now have an Atom feed!
Next week: I'm giving an IUCN webinar on Tessera with David Coomes, so come along if you're free!

