Anil Madhavapeddy

Professor of Planetary Computing at the University of Cambridge @cst.cam.ac.uk, where I co-lead the @eeg.cl.cam.ac.uk and work on computing for global biodiversity and climate change with @conservation.cam.ac.uk. Homepage at https://anil.recoil.org

1637 followers513 following98 stories

Longform Stories

Rewilding the Web: my workshop report from Edinburgh

Notes from a wonderfully interdisciplinary Edinburgh workshop on 'Rewilding the Web', ranging coopetition and biological variety through the philosophy of self-organisation, polycrisis governance, pro…

5d ago·1 min read·43 words

The FP Launchpad takes off at IIT Madras

Apr 13·1 min read·8 words

The Internet needs an antibotty immune system, stat

Anthropic's Mythos makes autonomous vulnerability chaining across devices a sudden reality, so I've been thinking about how digital 'antibotty' inoculation networks may be needed far sooner than I exp…

Apr 8·1 min read·37 words

A Proposal for Voluntary AI Disclosure in OCaml Code

Proposing a voluntary, machine-readable AI content disclosure scheme for OCaml spanning opam packages, dune, and per-module attributes, aligned with the W3C AI Content Disclosure vocabulary.

Apr 3·1 min read·34 words

.plan-26-13: Oxidised, standardised, and syndicated

Publishing the OxCaml Labs year-one review, POSSE and AI content disclosure for the web, adopting the geo-embeddings Zarr convention for TESSERA, action PROPL at PLDI, the death of the grant applicati…

Mar 29·1 min read·42 words

TESSERA now supports the Zarr geo-embeddings convention proposal

Community feedback reshaped our Zarr store layout — years became a dimension, shards got bigger, and we retired the TESSERA-specific convention in favour of a shared geo-embeddings standard that also …

Mar 27·1 min read·41 words

.plan-26-12: Zarr across space and TESSERA time

Reworking the TESSERA Zarr store layout after community feedback, Springer's API woes for evidence synthesis, vibecoding introspection, and git remote helpers for ATProto.

Mar 22·1 min read·30 words

.plan-26-11: Bins, bollards, bots and biodiversity boffins

Evidence synthesis at the DEFRA science conference, TESSERA transcoding and building a new SPA, OpenStreetMap/DuckDB bindings in OxCaml, and early thoughts on vibecoding etiquette.

Mar 15·1 min read·31 words

Streaming millions of TESSERA tiles over HTTP with Zarr v3

How we restructured TESSERA's geospatial embeddings from millions of individual numpy files into sharded Zarr v3 stores for efficient HTTP streaming, enabling everything from single-pixel mobile looku…

Mar 14·1 min read·47 words

.plan-26-10: Streaming TESSERA working, biodiversity action papers, and FPL takes off

TESSERA streaming in the browser, planetary programming at WG2.8, biodiversity action papers, FP Launchpad opens, and Docker CACM buzz

Mar 8·1 min read·30 words

Connecting the dots for biodiversity action from the NAS/Royal Society Forum

Summary of the Nine Recommendations and Biodiversity Monitoring Standards Framework papers from the NAS/Royal Society US-UK Forum in summer 2025, and how they connect to my work on collective knowledg…

Mar 7·1 min read·46 words

Call for abstracts: Rewilding the Web: diversity and resilience in digital infrastructure

This workshop will bring together ecologists, philosophers, cultural theorists, and technologists to discuss how contemporary insights from theoretical biology and ecology can provide a richer underst…

Mar 4·2 min read·368 words

.plan-26-09: Browser TESSERA, package management and Docker in the CACM

Got TESSERA working in Zarr and the browser, and a preprint of package management a la carte pushed out

Mar 1·1 min read·29 words

A Decade of Docker Containers on the CACM cover!

Our CACM cover article reflects on a decade of Docker, from the early days of hacking Docker for Mac on a French farm to today's AI-driven sandboxing, covering the technical origins, cross-platform ch…

Feb 24·1 min read·52 words

.plan-26-08: At AI summit, Shriram's PL opinions, Zarr hacking

TESSERA paper accepted at CVPR 2026, went to the AI Impact Summit, OCaml Zarr hacking, Shriram's talk on human factors of formal methods, and discussions on teaching OxCaml to agents.

Feb 22·1 min read·39 words

At the AI Impact Summit in Delhi: people, planet, progress

Trip report from the Indian AI Impact Summit in New Delhi, covering the massive expo, a conversation with Yann LeCun, a hackathon/talk at IIT-Delhi, networking at the British High Commission, and refl…

Feb 22·1 min read·54 words

1st TESSERA/CoRE hackathon at the Indian AI Summit

First TESSERA hackathon held at the Indian AI Impact Summit in Delhi, exploring integration with IIT-Delhi's CoRE Stack for geospatial analysis and testing TESSERA labeling workflows.

Feb 19·1 min read·34 words

.plan-26-07: Storage, Lego, Echo, and the IUCN

Growing the Ceph cluster for TESSERA embeddings, a Lego brainstorming session for the Evidence TAP, hosting Echo Labs from ARIA, and Shane's IUCN Red List seminar.

Feb 15·1 min read·33 words

Weeknote 2026/w6: Vivas, ARIA and interviews

PhD viva for Maddy, presenting TESSERA at ARIA, Nature covers the conservation evidence conference, giving evidence to Parliamentary POST, and a CACM interview.

Feb 8·1 min read·29 words

Discussing effective conservation with all the UK Chief Scientists

Hosting the UK chief scientists for nature conservation at Pembroke to discuss TESSERA and AI for biodiversity, followed by the Conservation Evidence conference where I talked about choosing the open …

Feb 3·1 min read·47 words

My (very) fast zero-allocation webserver using OxCaml

Building httpz, a high-performance HTTP/1.1 parser with zero heap allocation using OxCaml's unboxed types, local allocations, and mutable local variables

Feb 1·1 min read·27 words

Weeknote 2026/w5: An OxCaml hacking week

Deploying an OxCaml zero-allocation webserver, OCaml CI maintenance and opam versioning, and OCaml Workshop and FOSDEM talks

Feb 1·1 min read·23 words

Weeknote 2026/w4: Travelling and tracking TESSERA activity

Tracking TESSERA activity including a new preprint and podcast, wrestling with Zarr, and saying farewell to David Allsopp.

Jan 25·1 min read·25 words

Weeknote 2026/w3: TESSERA scaling and speaking at AI4Nature's launch

Scaling TESSERA embeddings on Vultr AMD GPUs, speaking at the AI4Nature launch in London, and picking up Tomas Petricek's new PL book.

Jan 18·1 min read·31 words

Five ways to use the LIFE metric for conservation decision-making

Our new paper in Biological Conservation demonstrates how the LIFE extinction risk metric can be applied across five diverse case studies, from real-time tropical deforestation monitoring to evaluatin…

Jan 12·1 min read·41 words

.plan-26-02: Back from India and straight into the conservation conference

Hosting the Conservation Evidence conference at Pembroke, recovering from the India trip, and keeping up with LLM developments.

Jan 11·1 min read·28 words

Devcontainer for using O(x)Caml and Claude in your projects

A prebuilt Docker devcontainer for sandboxed OCaml and OxCaml development with Claude Code, including multiarch builds and network isolation.

Jan 8·1 min read·28 words

.plan-26-01: Easing into the new year with reading, temples and mosquitos

Family travels through Udaipur, Vijayawada and Hyderabad, visiting temples and villages, plus kicking off the TESSERA 2025 embeddings.

Jan 4·1 min read·29 words

Happy new year and my fave readings of the year

My favourite books, podcasts and recommendations from 2025, covering moral ambition, maps, wolves, AI dystopias, geopolitics, Chennai history, and the best tech podcasts.

Jan 2·1 min read·33 words

AoAH Day 25: Claude OCaml Marketplace for all your festive coding needs

Wrapping up 25 days of agentic coding with a Claude Code OCaml plugin marketplace to share the skills and tools developed throughout the series.

Dec 25·1 min read·36 words

AoAH Day 24: Tuatara, an evolving Atom aggregator that mutates

Tuatara is a feed aggregator that integrates Claude to evolve and patch its own code when encountering parsing errors, embodying the concept of self-healing software.

Dec 24·1 min read·35 words

AoAH Day 23: Unpac unifies git branching with package management

Introducing unpac, a tool that unifies git and package management into a single workflow where all code dependencies live in one repository as trackable branches.

Dec 23·1 min read·35 words

AoAH Day 22: Assembling monorepos for agentic OCaml development

Materialising opam metadata into git submodules and monorepos, enabling cross-cutting fixes and unified odoc3 documentation across dozens of OCaml libraries.

Dec 22·1 min read·29 words

AoAH Day 21: Complete dynamic HTML5 validation in OCaml and the browser

Porting the W3C's Nu HTML Validator from Java to OCaml and running in the browser dynamically

Dec 21·1 min read·28 words

AoAH Day 20: Human language detection in native code, JS and wasm

Porting the Nu HTML Validator's language detection to OCaml, then optimizing from 115MB to 28MB and fixing WASM array limits for browser deployment.

Dec 20·1 min read·35 words

AoAH Day 19: Zulip bot framework to bring Vicuna the friendly camel back

Building an OCaml Zulip bot framework with functional handlers, and pivoting from TOML to INI codecs for Python configparser compatibility

Dec 19·1 min read·33 words

AoAH Day 18: TOML 1.1 codecs directly from the spec and paper

Building tomlt, a pure OCaml TOML 1.1 parser with bidirectional codecs following the jsont design patterns

Dec 18·1 min read·28 words

AoAH Day 17: OCaml JMAP to plaster my painful email papercuts

Building an OCaml JMAP client that runs in browsers and CLI, then using it to build personalised email workflows for taming notification overload.

Dec 17·1 min read·34 words

AoAH Day 16: Vibesplaining JSON Pointers using OCaml/Javascript

Building interactive OCaml tutorials that compile to JavaScript, using agents to generate executable documentation that teaches protocols like JSON Pointer while you code review.

Dec 16·1 min read·32 words

AoAH Day 15: Porting a complete HTML5 parser and browser test suite

Vibespiling JustHTML from Python to pure OCaml, achieving 100% pass rate on the browser html5lib test suite using agentic workflows.

Dec 15·1 min read·32 words

AoAH Day 14: Debugging a Karakeep CLI against the live service

Vibe coding an OCaml library for the Karakeep bookmarking service by giving an agent a live API key and letting it debug jsont codecs against the real service.

Dec 14·1 min read·39 words

AoAH Day 13: Heckling an OCaml HTTP client from 50 implementations in 10 languages

Agentically synthesising a batteries-included OCaml HTTP client by gathering recommendations from fifty open-source implementations across JavaScript, Python, Java, Rust, Swift, Haskell, Go, C++, PHP …

Dec 13·1 min read·40 words

AoAH Day 12: Eio Connection pooling and event tracing

Building a TCP/TLS connection pooling library for Eio with DNS-based load balancing, stacked error handling, and self-contained HTML visualisations for stress test results.

Dec 12·1 min read·32 words

AoAH Day 10: Building a TUI for Sortal using Mosaic

Building a simpler single-process terminal UI for Sortal using Mosaic's effects-based direct-style API, with Eio integration and discovering multimodal image debugging for terminal layouts.

Dec 10·1 min read·34 words

AoAH Day 11: HTTP Cookies and vibing RFCs for breakfast

Synthesizing three RFC-compliant libraries (punycode, public-suffix, and cookeio) directly from Internet RFC specifications, establishing a workflow for automating standards implementation with proper…

Dec 10·1 min read·36 words

AoAH Day 9: Adding a Bonsai terminal UI to Sortal

Experimenting with OxCaml's bonsai_term framework for Sortal's terminal UI, navigating Eio-Async interoperability challenges through JSON-RPC while discovering image-based debugging techniques for ter…

Dec 9·1 min read·33 words

AoAH Day 8: Building a contacts CLI manager with Sortal

Creating Sortal, a CLI contacts management application using Yaml storage, XDG directories, Git-based synchronization, and integrating all previously built libraries into a cohesive CLI tool.

Dec 8·1 min read·35 words

AoAH Day 7: Converting between JSON and Yaml with yamlt

Building yamlt to enable jsont codec definitions to work with both JSON and Yaml, providing data manipulation with location tracking and good error messages for both formats.

Dec 7·1 min read·37 words

AoAH Day 6: Getting a Yaml 1.2 implementation in pure OCaml

Implementing a pure OCaml Yaml 1.2 parser using bytesrw by synthesizing from the specification and existing C library behavior, passing thousands of test suite cases while being 20% faster than the C-…

Dec 6·1 min read·44 words

AoAH Day 5: Bytesrw Eio adapters and automating opam metadata

Building Bytesrw-Eio adapters for composable byte stream I/O while discovering Claude Skills as a powerful way to automate opam package metadata management through reusable workflow templates.

Dec 5·1 min read·36 words

AoAH Day 4: Going recursive with Claudeio for Claude

Creating OCaml bindings for the Claude API using Eio and jsont codecs by reverse-engineering the JSON-RPC protocol from Python and Go SDKs, enabling Claude to write more Claude-powered OCaml code.

Dec 4·1 min read·39 words

Foundational AI for Ecosystem Resilience workshop

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 …

Dec 3·1 min read·32 words

AoAH Day 3: XDG filesystem paths using Eio capabilities

Building an XDG Base Directory Specification library with Eio capabilities and Cmdliner integration, providing sandboxed filesystem access patterns with full environment variable and CLI override supp…

Dec 3·1 min read·35 words

AoAH Day 2: Building an OCaml JSONFeed library

Implementing a JSONFeed specification library using jsont codecs, discovering how Claude can automate the construction of complex combinators from prose specifications with excellent error messages.

Dec 2·1 min read·33 words

AoAH Day 1: Building a Base32 Crockford library in OCaml

Building a Base32 Crockford encoding library in OCaml using Claude Code, establishing the development workflow with sandboxed Docker containers and local development environments.

Dec 1·1 min read·33 words

The AI French Connection to the Practice of Science

Reflections on the Franco-British AI collaboration workshops exploring how AI is transforming scientific practice, plus follow-up funding for the Conservation Copilot project.

Dec 1·1 min read·31 words

2025 Advent of Agentic Humps: Building a useful O(x)Caml library every day

An exploration of agentic programming through building useful OCaml libraries daily using Claude Code while establishing groundrules for responsible development.

Dec 1·1 min read·32 words

Four Ps for Building Massive Collective Knowledge Systems

Design principles for collective knowledge systems—permanence, provenance, permission, and placement—that enable robust networks for evidence-based decision making.

Nov 23·1 min read·25 words

GeoTessera 0.7 out with efficient sampling and Zarr support

GeoTessera 0.7 switches to GeoParquet manifests for faster initialisation, adds Zarr tensor storage support, and provides new sampling APIs for building downstream tasks like solar panel detection.

Nov 17·1 min read·36 words

On the path to the UK/India AI Summit with OpenUK and the ATI

Reflections on UK-India AI collaboration from meetings at the Alan Turing Institute and OpenUK, discussing ethical AI deployment, open source infrastructure, and the challenges of building community i…

Nov 11·1 min read·46 words

Food and the long term risk to life

A Cambridge article explores our research on how food consumption affects the extinction risk of 30,875 land-dwelling animal species, with an interactive tool to examine biodiversity impacts across di…

Nov 6·1 min read·40 words

Jensen Huang receives the Hawking Fellowship at Cambridge

Reflections on meeting Jensen Huang as he received the 2025 Hawking Fellowship, discussing his views on education, assessment, risk-taking culture at Nvidia, and the future of AI in scientific discove…

Nov 4·1 min read·41 words

A Roundup of ICFP/SPLASH 2025 happenings

Five-part series overview covering workshops, tutorials, talks and keynotes from ICFP/SPLASH 2025 in Singapore.

Oct 10·1 min read·20 words

What I learnt at ICFP/SPLASH 2025 about OCaml, Hazel and FP

Highlights from ICFP/SPLASH 2025 including Hazel live programming, OCaml AI tooling, formally verified GC, and cross-community discussions between Haskell and OCaml.

Oct 9·1 min read·32 words

It's time to go post-POSIX at ICFP/SPLASH 2025

VMIL keynote arguing for post-POSIX shared memory interfaces like io_uring in language runtimes for high-performance concurrent computing.

Oct 8·1 min read·25 words

Jane Street and Docker on moving to OCaml 5 at ICFP/SPLASH 2025

Jane Street's production deployment of OCaml 5 and Docker's migration to direct-style programming with Eio presented at ICFP.

Oct 7·1 min read·30 words

Holding an OxCaml tutorial at ICFP/SPLASH 2025

Tutorial at ICFP 2025 on OxCaml extensions for performance engineering with modes and locals.

Oct 6·1 min read·21 words

Programming for the Planet at ICFP/SPLASH 2025

Report on second Programming for the Planet workshop featuring papers on climate modeling, geospatial computation and planetary-scale collaborative systems.

Oct 5·1 min read·26 words

Do not rule out nature from climate action; an open letter

Open letter to UN Article 6.4 supervisory body advocating for nature-based climate solutions alongside durable carbon sequestration technologies.

Sep 10·1 min read·29 words

Exploring the biodiversity impacts of what we choose to eat

Nature Food paper revealing food choice biodiversity impacts vary by three orders of magnitude with interactive global explorer tool.

Sep 9·1 min read·29 words

GeoTessera Python library released for geospatial embeddings

Release of GeoTessera Python library and CLI for accessing TESSERA geospatial foundation model embeddings with interactive visualization tools.

Aug 31·1 min read·25 words

Presenting our Ecology of the Internet ideas at Aarhus 2025

Presentation at Aarhus 2025 on Internet ecology, proposing AI-driven software diversity to fight protocol ossification and create more resilient networks.

Aug 22·1 min read·30 words

mlgpx is the first Tangled-hosted package available on opam

The Tangled git forge has recently gained support for CI, stacked pull requests and also the Dune build system can generate Tangled metadata easily now for OCaml packages hosted there.

Aug 17·1 min read·39 words

Tracking locations with OwnTracks, Life Cycle and Home Assistant

Setting up self-hosted location tracking using OwnTracks and reverse engineering Life Cycle app data with Claude Code for field work in Botswana.

Aug 14·1 min read·31 words

Cresting the OCaml AI humps

Community efforts to improve agentic coding experience for OCaml including MCP libraries, opam embeddings, and tooling improvements.

Jul 18·1 min read·22 words

Using Kyutai's low latency audio models on macOS in one command

Quick setup guide for running Kyutai's high-quality speech-to-text model locally on Mac using their MLX implementation.

Jul 16·1 min read·27 words

Royal Society's Future of Scientific Publishing meeting

Live notes from Royal Society conference on scientific publishing challenges including peer review crisis, AI poisoning threats and open access economics.

Jul 14·1 min read·28 words

Is AI poisoning the scientific literature? Our comment in Nature

Nature comment on AI-generated paper threats to evidence synthesis proposing federated living evidence databases with human-in-loop review.

Jul 8·1 min read·27 words

EEG internships for the summer of 2025

Coordination note for summer 2025 undergraduate and graduate internships covering projects from evidence databases to remote sensing and embedded systems.

Jun 28·1 min read·27 words

Steps towards an ecology of the Internet

Paper exploring biological ecosystem models as inspiration for Internet architecture evolution towards trillion-node scale at Aarhus 2025.

Jun 25·1 min read·24 words

Under the hood with Apple's new Containerization framework

Technical deep dive into Apple's new macOS Tahoe containerization framework using Kata Containers and Swift-based implementation.

Jun 11·1 min read·24 words

Visiting National Geographic HQ and the Urban Exploration Project

Visit to National Geographic HQ for workshop on global urban wildlife tracking initiative and human-wildlife coexistence research.

Jun 7·1 min read·26 words

We become Junior Rangers at Shenandoah

Earning Junior Ranger badges at Shenandoah National Park and recording Conservation Concepts video series episode.

May 27·1 min read·21 words

What I learnt at the National Academy of Sciences US-UK Forum on Biodiversity

Report from NAS/Royal Society forum on standardized biodiversity measurement technologies covering foundation models, eDNA and evidence synthesis.

May 24·1 min read·30 words

New preprint survey on energy-aware deep learning on embedded hardware

Survey paper on energy-aware approaches for optimizing deep learning training and inference on embedded devices.

May 20·1 min read·25 words

Out-of-the-box LLMs are not ready for conservation decision making

PLOS One publication showing pretrained LLMs perform poorly on conservation questions but improve dramatically with Conservation Evidence database training.

May 16·1 min read·28 words

Learnings from the Cambridge Environmental Sustainability Committee

Insights from Cambridge University's Environmental Sustainability Strategy Committee on carbon reduction, biodiversity, and operational sustainability progress.

May 13·1 min read·23 words

Humans are the ones that will save nature, helped by AI

Discussion of responsible AI adoption in conservation, emphasizing human agency and equity over technological solutions.

May 7·1 min read·26 words

Using Komodo to manage Docker compose on a small cluster

Guide to deploying Komodo container management tool with Wireguard mesh networking for coordinating Docker services across multiple hosts.

May 5·1 min read·28 words

BIOMASS launches to measure forest carbon flux from space

ESA's BIOMASS satellite successfully launches, featuring first global P-band SAR instrument capable of penetrating forest canopy to measure tree health and carbon flux.

May 1·1 min read·32 words

Technology needs to unite conservation, not divide it

Response to critique of AI in conservation emphasizing participatory design, open source tools and equitable capacity building in Global South.

Apr 25·1 min read·28 words

Viewing web logs the old fashioned way with Goaccess

Guide to using Goaccess privacy-preserving server-side log analyzer with Caddy JSON logs for web analytics.

Apr 23·1 min read·24 words

Talks from LOCO24 are now available online

LOCO24 conference talks now available on self-hosted video platforms with peer-to-peer redundancy.

Apr 17·1 min read·19 words

Webassembly on exotic architectures (a 2025 roundup)

Survey of WebAssembly implementations on non-traditional targets including native Linux port, kernel-mode runtime, POSIX browser support and FPGA ports.

Apr 16·1 min read·26 words

ESA's first BioSpace conference seems a huge success

Report on ESA's first Biodiversity Insights from Space conference featuring presentations on urban tree management and remote sensing biodiversity metrics.

Apr 16·1 min read·28 words

Unikernels wins the ASPLOS most influential paper award

2013 MirageOS unikernels paper wins ASPLOS influential paper award with reflections on the journey from rejection to recognition.

Apr 12·1 min read·26 words

Hello from Bellairs in Barbados

Mar 19·1 min read·24 words

The Cambridge "Green Blue" competition to reduce emissions

Thinking about a Cambridge "Green Blue" competition to reduce emissions among Colleges, promoting cooperation through a semi-competitive league

Feb 10·1 min read·26 words