I track a number of online blogs and connect relevant ones to things I am working on. You can grab my blogroll OPML here, or just browse it below. If you have your own blog that I've missed, do let me know!
Deploying Ubuntu 26.04 on the CI workers Mark Elvers — As mentioned in the Docker 29 post, I have been moving the Linux workers to Ubuntu 26.04 so we can test io_uring on the 7.0 kernel. There are eighteen…NKQTCat: Queer and Trans People in Category Theory Neel Krishnaswami — I just saw a poster for the QTCat workshop, which is a workshop for queer and trans people in category theory, which is being held this August 12-14, …
Docker 29 and COPY –link –chown Mark Elvers — After deploying the QEMU RISC-V machines, the base image builder ran into issues on the first Docker build.
How does street lighting impact wildlife and when should we turn off the lights? Conservation Evidence — Samuel Challéat and colleagues share insights from their work exploring the effects of part-night lighting - a potential conservation action in artif…
Weeknotes 2026-W23 Jon Sterling — It has been a hell of a month! I am dying to get back to doing science with my students. Part IA Examining We are well past the point of no return for…ANWeeknotes: 2026 Week 23 Aneesh Naik — I’ve been up in Edinburgh this week after a fun couple of weeks down in Cambridge. What I was working on Research I made incremental progress on var…
TESSERA arrives in Denver for its CVPR Debut TESSERA — A new AI model developed at the University of Cambridge distils millions of satellite images into a format that is easily used by researchers to revea…
Spotting broken A10s in Azure Mark Elvers — In the previous post I mentioned that two A10s developed ECC faults during the UK processing. This occasional annoyance needs constant vigilance as fa…
Emulating RISC-V workers when the hardware goes away Mark Elvers — Scaleway provide the RISC-V workers for OCaml CI, and they have been down for about a week with no real evidence that they’ll be back anytime soon. …
OCaml CI lingering solves Mark Elvers — By now, you’ll know that I’ve been looking at OCaml CI more than I ever had before and was confused by the solver jobs, which seemed to hang aroun…
OCaml CI GitHub Rate Limit Mark Elvers — While looking at OCaml CI for the FD leak, I noticed some odd pending events in the OCaml CI build graph.
Tangled, or federated enough git Michael Dales — For a long time I’ve been stuck waiting for my perfect alternative to GitHub to appear. Whilst I've been historically a fan of GitHub, and used it f…
Opam’s Nix system dependency mechanism Ryan Gibb — Jun. 2026Ryan Gibb.Caml in the Capital. The OCaml language package manager, Opam, has support for interfacing with system package mangers to provide d…
Sabbatical Diary: Weeks 33---34 Richard Mortier — A quiet couple of weeks, as I more or less anticipated. Caught up with some reading for various committees. I’m on sabbatical so am not allowed to a…ANWeeknotes: 2026 Week 22 Aneesh Naik — In the group I’ve joined at the University of Cambridge, there is something of a culture of writing “weeknotes” at the end of each week. The ide…
OCaml-CI HTTP 502 errors Mark Elvers — Over the last few weeks, I have restarted the OCaml-CI web container every 3 or 4 days because users are encountering HTTP 502 errors.
Webbplats update (part 1) Michael Dales — This website is hosted using Webbplats, my own OCaml based thing that is kinda like a static site generator, but dynamic. It was built upon Dream, a w…
strace-ui, Bonsai_term, and the TUI renaissance Jane Street — We’ve always found strace useful but somewhat hard to work with. Its output is often inscrutable, it’s hard to follow subprocesses or threads, and…
Geocaml Hacking Michael Dales — A couple of weeks ago I wrote about building a point cloud visualisation tool in OCaml, and I've found a little time this week to crunch of that more,…
Train Lines Alastair Tse — I decided to revisit an old project of mine, rendering train lines in Japan. I gave a talk at Tokyo Tech Meetup about my obsession with open geo data …
Processing the UK with Tessera v1.1 on Azure Mark Elvers — Sadiq asked me to process the UK with Tessera v1.1 on Azure using the most cost-effective method.
Prompting `bash` with `git` and `jj` Richard Mortier — I recently decided to make a push on trying out jujutsu as an alternative to git. Being easily distracted by side-quests I decided that I should sort …
Cambridge's TESSERA Helping to Protect UK Hedgehogs from Space TESSERA — Researchers at the University of Cambridge have teamed up with the Cambridge Conservation Initiative to use TESSERA's satellite AI to map hedgehog hab…
LLM Navigator Alastair Tse — I had an idea about creating a browser that doesn't use the internet. What does that even mean? The idea is seeing whether you could get an AI to drea…
Publishing System Alastair Tse — I'm making some big changes to how the internals of my blog works. Everything is driven out of an Obsidian Vault with some custom tools (partially vib…
Dishwasher Alastair Tse — Using AI coding agents is a little like using a dishwasher. There's no proper way to load the dishwasher, like there's no proper way to really prompt …
Sabbatical Diary: Week 32 Richard Mortier — Some progress this week, as I enter the last third of the sabbatical so the end is really starting to feel imminent. Reviewed a second UKRI research p…
Remembering to turn on the tap Michael Dales — I've been working on an update to the LIFE pipeline for a few months now, which has caused me to refactor some of the pipeline, including moving some …
O(x)Caml in Space Thomas Gazagnaire — On 23 April, our pure-OCaml CCSDS protocol stack booted up in low Earth orbit! The project, codename Borealis, is running inside DPhi Space's ClusterG…NKBidirectional Typechecking That Does Not Stop Neel Krishnaswami — html { color: #1a1a1a; background-color: #fdfdfd; } body { margin: 0 auto; max-width: 36em; padding-left: 50px; padding-right: 50px; padding-top: 50px…
Odd opam update behaviour Mark Elvers — A few days after retiring opam 2.0 from the build pipeline, ocaml-ci Jon noticed that some jobs were failing. I immediately concluded that the removal…
Weeknotes May 2026 weeks 18-19 Jon Ludlam — Over the past two weeks I've been mainly wrestling with odoc.AO2026-19 Akshay Oppiliappan — Evidence based vouching Vouch on Tangled is evolving a bit more with evidences. If you recieve a PR on Tangled, the UI helpfully suggests that you vou…
Shrinking the OxCaml js_of_ocaml bundle: 285 MB to 4 MB KC Sivaramakrishnan — In the previous post on capsules, I cheated. The lecture I was adapting (from my CS6868 course on language abstractions for parallelism) used Await_ca…
Sabbatical Diary: Week 31 Richard Mortier — Quieter week with a flurry at the end. A good seminar, an excellent friend’s birthday meal, and of course, I voted.1 Finally got round to setting up…
Weeknotes 2026-W19 Jon Sterling — Just a quick note this week. I haven’t been able to work on Project Pterodactyl in a while, as I have been focused on clearing out my writing backlo…
Capsules: compile-time lock discipline in OxCaml KC Sivaramakrishnan — In the previous post we fixed the racy gensym with Portable.Atomic. That worked because the shared state was a single integer with atomic primitives. …
Zarr and GeoZarr Michael Dales — I work in the same group as the folk producing the Tessera foundation model. Whilst the foundation model itself is exciting, one of the things I've be…
FP Launchpad members win prize at LeanLang Hackathon, IISc Bangalore FP Launchpad — FP Launchpad researcher Vimala S. and PhD student Durwasa C. took 2nd prize at the LeanLang for Verified Autonomy Hackathon at IISc Bangalore. Read mo…
Machine Learning in OxCaml Mark Elvers — The inspiration for this post came from Dave’s Garage YouTube Channel. It featured dbrll/ATTN-11, which used machine learning on a PDP-11 to reverse…
Retiring opam 2.0 from the build pipeline Mark Elvers — ocurrent/docker-base-images publishes the ocaml/opam:* Docker images which the OCaml CI systems use. For each distro, it tracks 2.0, 2.1, 2.2, 2.3, 2.…
News update from Conservation Evidence Conservation Evidence — This blog post is an overview of recent and ongoing activities involving the Conservation Evidence team.
Data race freedom in OxCaml KC Sivaramakrishnan — A while back I wired up x-ocaml so this blog could embed live, editable OCaml notebooks. That post used a vanilla OCaml 5 toplevel. Today the toplevel…
OCaml and point clouds Michael Dales — I made some small progress towards my dream of a global point cloud viewer this week. Not much progress, but a start. It was riffing off a conversatio…
Twitter Alastair Tse — Finally deleted all my tweets from Twitter. The web API rate limits to 200 deletes per 15 mins, and I had 13209 tweets - roughly 16 hours if nothing w…
Weird Windows container version numbers Mark Elvers — Running ver in a Windows container doesn’t report the version number that you expect.AO2026-18 Akshay Oppiliappan — We need a federation of forges I wrote a bit about forge federation, the full post is on the Tangled blog but also on this site. I have taken to expla…
Island Alastair Tse — Have any of you wondered why island is not pronounced is-land?
TESSERA at the FP Launchpad kickoff at IIT Madras TESSERA — A talk on functionally programming petabytes of Earth observations at the launch of the FP Launchpad Centre for Functional Systems Research and Educat…
There’s something rather fishy going on at Conservation Evidence… Conservation Evidence — Ann Thornton and Vanessa Cutts present the latest Conservation Evidence synopsis on habitat creation and restoration for fish in inland habitats, and …
Weeknotes 2026-W18 Jon Sterling — An injury healing I am moving a bit slower than I would like at the start of term because I injured myself last week—I took a tumble and tremendousl…
Sabbatical Diary: Week 30 Richard Mortier — Quite a travelling week in the end. I returned from the UK Systems Challenges workshop and have posted all those slide decks that I’ve been sent (mo…
Update solver-service in OCaml-CI local mode Mark Elvers — When I (mostly) unvendored ocaml-ci’s submodules a few days ago. Four out of the five were published in the opam-repository, but solver-service was …
Using `day10` to build an OxCaml project Mark Elvers — Today, looking at my OxCaml inference engine, I wanted to see whether day10 build . could build an OxCaml project.
Making contours from elevation rasters Michael Dales — A friend asked me to make them some contour maps of Kullberg, given I clearly had all the data necessary, and given it was not something I'd tried bef…
Tessera v1.1 inference: faster per-FLOP, slower per-tile Mark Elvers — In this post I look at the changes in Tessera v1.1 and validate the benchmarks in my Intel AMX post on the latest checkpoint.
FreeBSD 15.0 Upgrade Mark Elvers — FreeBSD 15.0 has been out for a while, with issue#1036 pending resolution. The CI update is easy, but the CI worker rosemary needed an upgrade and new…
ocaml-ci moves to significant versions Mark Elvers — The same OCaml build matrix updates which where deployed in opam-repo-ci have now been applied to ocaml-ci.
Keynote and paper at PaPoC 2026 FP Launchpad — KC Sivaramakrishnan delivered an invited keynote — “From Convergence to Confidence: Push-Button Verification for Replicated Data Types” — at P…AOwe need a federation of forges Akshay Oppiliappan — Crossposted from the Tangled blog. GitHub seems to be crumbling the past couple of weeks. Whatever the reason, ultimately its not great for 90% of the…
OCurrent on Eio Mark Elvers — OCurrent has always been Lwt-based but what would it take to migrate it to Eio? The pipeline DSL itself is incremental computation over Current.t, but…
From Convergence to Confidence: Push-button verification for RDTs KC Sivaramakrishnan — What does it mean for a replicated data type to be correct? For most of the literature, my own prior work included, the answer has been convergence: t…
Weeknotes 2026 weeks 16-17 Jon Ludlam — A two week update this week. Most of this fortnight has been spent on different sides of the same problem: getting OCaml documentation into a state wh…AO2026-17 Akshay Oppiliappan — Joining Cambridge I am thrilled to announce that I have joined Cambridge as a Research Associate working under Anil Madhavapeddy. I thank the EE group…
AOjjj Akshay Oppiliappan — Several jujutsu commands require a revset. When I am hacking on a project, I tend to poke at multiple stacks simultaneously. Many of these stacks use …
OggCamp 2026 Michael Dales — This weekend was OggCamp 2026, a community run conference on open source, open data, and open culture. I always find OggCamp a bit hard to define, as …
opam-repo-ci and OCaml significant versions Mark Elvers — Updates to opam-repo-ci which pull in the latest ocaml-version and ocaml-dockerfile releases trim the build matrix and add in the latest releases of A…
Kickoff event videos are now up FP Launchpad — All talks from the FP Launchpad Kickoff on April 13, 2026 are now available on YouTube. The playlist includes 10 talks covering hardware design, secur…
Sabbatical Diary: Weeks 28---29 Richard Mortier — Another delayed one—must try harder… :/ Spent some time doing more paper reviewing: EdgeSys’26 and ICDCS’26 this time, plus a couple of UKRI r…
The ditch is back! Conservation Evidence — Vanessa Cutts and Helen Driver share insights from a new report, synthesizing evidence for the effects of ditch management actions on biodiversity
Library Operating Systems for the Desktop Thomas Gazagnaire — On 15 April, the Cambridge Ring, the alumni society of the University of Cambridge Computer Laboratory, named our paper "Functional Networking fo…
Work LIFE balance Michael Dales — I've had quite a frustrating time on trying to land a set of changes to the LIFE pipeline. I don't want this post to be a rant, but I also do believe …
Using group theory to explore the space of positional encodings for attention Jane Street — Attention is a computational primitive at the core of modern language models, allowing internal representations to reference and influence each other.…
Prefetch opam files for day10 –fork Mark Elvers — Last month, I wrote a walkthrough on using mtelvers/day10 and while stuck in traffic yesterday, I was thinking about all those individual opam files w…
Tailwind Without Node Thomas Gazagnaire — Tailwind CSS introduced a clever way to manage the HTML/CSS split: encode CSS properties as class names. This solves a recurrent friction in large cod…
Weekly Notes - 2026-04-19 Andres Zuñiga-Gonzalez — Introduction This is a big update on the Local Climate Zones (LCZs) classification project. I’ve been working on two different approaches since the …AO2026-16 Akshay Oppiliappan — FP Launchpad at IIT Madras I had the pleasure of attending the inaugration of FP Launchpad, courtesy of KC Sivaramakrishnan and Anil Madhavapeddy. It …
Rendering 156 km^2 of Swedish forest in Minecraft Michael Dales — A question I've been asking myself a lot since I started doing geospatial climate analysis is how do we communicate the results to non-domain experts?…
Calibrated biomass and below-ground biodiversity with TESSERA TESSERA — Two new preprints use TESSERA embeddings for calibrated biomass gap-filling and below-ground fungal biodiversity prediction.
Building a STAC server to avoid scanning 3.8 million tiles Mark Elvers — The GeoTessera project produces 128-channel geospatial embeddings from Sentinel satellite imagery. The dataset is tiled at 0.1-degree resolution acros…
Day10: local development builds Mark Elvers — My typical OCaml development workflow starts with git clone ..., then opam switch create . 5.4.1 --deps-only followed by dune build. This creates a lo…
Transferring 470 TB from CephFS to S3 Mark Elvers — I needed to copy ~400 TB of geospatial embedding data (12 million files) from a CephFS cluster in Scaleway Paris to an S3 bucket in AWS us-west-2.
Playing with open weight LLMs. Tom Loosemore — Checking back in on the state of open weight LLMs after a couple of months away and the best are much better than in Jan – notably gemma4 and qw…
Reimplementing the Space Protocol Stack from Scratch Thomas Gazagnaire — A satellite link is a radio signal between a ground station and a spacecraft moving at 7.5 km/s, visible for 10 minutes at a time, over a channel meas…
Weeknotes 2026 week 15 Jon Ludlam — Once again, the docs CI went down. This time, something had scribbled over the docker partition and so we needed to do a full build from scratch. Fort…
Sabbatical Diary: Weeks 23---27 Richard Mortier — Wednesday’s hump day, Hump day’s Wednesday, Over the hump, The week’s half done – J.J. Cale, “Friday” Not so much to report for the last w…
OCI image export from day10 Mark Elvers — mtelvers/day10 can now export build results as multi-layer OCI images, where each opam package becomes its own layer.
The CVE fix that broke CI Mark Elvers — Recently opam-repo-ci jobs started failing on openSUSE Leap 15.6. The error looked like a disk space problem with thousands of lines of tar: Cannot mk…
Talk: Property Based Testing to Verify Pipelined CPU Hardware — Rishiyur S. Nikhil FP Launchpad — Speaker: Rishiyur S. Nikhil — CTO and Co-founder, Bluespec
Can a CPU with Intel AMX Match a GPU for ML Inference? Mark Elvers — GPU acceleration is the default assumption for machine learning inference. But Intel’s AMX (Advanced Matrix Extensions) may close the gap. AMX is bu…
Google Alastair Tse — After 6863 days, yesterday was my final day at Google. Two months shy of 19 years. Grateful for all the opportunities. The opportunity to travel the w…
Coding a Digital Clock in OCaml 5 on the Raspberry Pi Pico 2 W Mark Elvers — While developing a Raspberry Pi GPIO library for the HD44780, mtelvers/gpio, I noticed that 8 custom characters could be used to create the elements o…
We have enough evidence to tackle the most prevalent threats Conservation Evidence — Manuela Gonzalez-Suarez shares her new paper with an optimistic outlook on the evidence base for tetrapod conservation
Predicting Satellite Collisions in OCaml Thomas Gazagnaire — In January 2026, two things happened that changed how satellite operators think about collision risk. The Office of Space Commerce published the TraCS…
OCaml Clock on Pi Pico 2W Mark Elvers — After playing with the Pi Pico 2W at the New Year, I had a little time today and made an OCaml-powered clock in a 3D-printed case.
Weeknotes 2026-W14 Jon Sterling — I have been experiencing a profound writer’s block, as far as weeknotes and blogging are concerned, for a while now and I’m trying to break it tod…
Odoc and OCaml Notebooks Jon Ludlam — As the chief maintainer of OCaml's odoc, I'm required to think hard about its future. What impact will advances in , , and the dramatic increase in we…
Weekly Notes - 2026-04-05 Andres Zuñiga-Gonzalez — Introduction This is a short update on the Local Climate Zones (LCZs) classification project. It’s a collection of notes and experiments I did last …
Free Hardware Performance Counters in OxCaml Runtime Events Sadiq Jaffer — A prototype extending OxCaml's Runtime Events to sample hardware performance counters at span boundaries, letting you correlate IPC, cache misses and …
Talk: Agentic Proof-oriented Programming — Nik Swamy FP Launchpad — Speaker: Nik Swamy — Partner Researcher, RiSE group, Microsoft Research, Redmond
Day10 TUI Results Tool Mark Elvers — A while back, I wrote mtelvers/day10-tui, which displayed custom mtelvers/day10 log files held in Apache Parquet format.
CI for opam overlay repositories with day10 and GitHub merge queue Mark Elvers — This post describes how to set up a CI for an opam overlay repository using day10 on a self-hosted GitHub Actions runner, with GitHub’s merge queue …
Call for Papers: PROPL 2026 — Programming for the Planet (PLDI 2026 Workshop) FP Launchpad — PROPL 2026 (Programming for the Planet) is an open working meeting co-located with PLDI 2026 in Boulder, Colorado (June 15–19, 2026). The workshop b…
A CSS Engine in OCaml Thomas Gazagnaire — I have rewritten my website in OCaml more times than I can count (from ocaml-cow to Canopy to custom MirageOS unikernels). This time, the styling was …
Agribound: agricultural field boundary delineation TESSERA — Agribound is a new Python toolkit that uses TESSERA embeddings for unsupervised agricultural field boundary delineation across multiple satellite sour…
From Scaleway to Cambridge Mark Elvers — Over the past few days, I migrated several OCaml CI services from Scaleway to Cambridge, consolidating them onto fewer machines with fewer services.
OSM Rasterizer Andres Zuñiga-Gonzalez — Hello!! I want to introduce you to osm-rasterizer, a package that I’ve been meaning to publish for a while now (available here). It’s sole purpose…
Weeknotes 2026 week 13 Jon Ludlam — Weeknotes 2026 week 13
Describing Binary Formats in OCaml Thomas Gazagnaire — Satellites are becoming software platforms. More software means more bugs, and bugs 400 km overhead are not easy to fix. Binary parsers written in C a…
Planetary scale training and inference with AMD and Vultr TESSERA — How we used AMD Accelerator Cloud and Vultr's MI325X GPU clusters to train the TESSERA v1 model and generate 250TB of global embeddings.
FP Launchpad Kickoff FP Launchpad — .sp { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; vertical-align: middle; margin-right: 0.4rem; border: 1px solid #e0e0e0; } FP …
Weekly Notes - 2026-03-29 Andres Zuñiga-Gonzalez — Introduction This is mostly an update on the literature review I’ve been doing for the LCZ classification project I’ve been working on plus an ini…
Expanding the Ceph Cluster to 600 TB Mark Elvers — We purchased twenty of what felt like the last stock of 8 TB Kingston DC600M SSDs to the Cambridge cluster, bringing it from 66 to 86 OSDs across 20 D…
Email as an interface to Claude Mark Elvers — In my previous post, I described running Claude Code as a non-interactive agent by feeding it a runbook via NOTES.md, letting it SSH into workers, dia…
Dynamic DNS with DHCP Mark Elvers — DHCP-assigned addresses are very convenient, except when they change, and your DNS server becomes out of sync.
Q1 2026: Dashboard Developments and Presenting in Peru Shane Weisz — Documents progress on developing the Red List Dashboard for biodiversity conservation using multiple Claude Code agents, and discusses plans for AI-as…
Restoration Dialogue: AI and Habitat Monitoring in the UK TESSERA — Over 30 researchers from universities, statutory agencies and NGOs gathered in Cambridge to explore whether geospatial foundation models like TESSERA …
Weeknotes 2026 week 12 Jon Ludlam — Weeknotes 2026 week 12
Ignoring changes Richard Mortier — OK, this one was mildly irritating but happily the solution is dead easy. In short, in this repo I have a file that I need to be committed as an empty…
Sabbatical Diary: Weeks 23 & 24 Richard Mortier — …and with that, the end of the second term1 of my sabbatical leave. Really getting scarily close to being half-way through. Oh well. Another fortnig…
How big is Europe? Mark Elvers — Tessera produces global land-cover embeddings at 0.1-degree resolution, roughly 11 km square at the equator. For each year and each grid tile, there i…
Introducing OverBanded.com, a total nonsense made with AI Tom Loosemore — I got the Eurostar back from Paris yesterday. So I made a new thing. This time I’ve combined data from the excellent new Energy Performance Cert…
A different way to interact with Claude Mark Elvers — We’ve all been using Claude via the prompt, and some have even ventured into running claude --dangerously-skip-permissions in a nice sandbox like av…
Weeknotes 2026 week 11 Jon Ludlam — Weeknotes 2026 week 11
GeoTessera R library now available TESSERA — Simon Frost from Microsoft Research has contributed an R port of the geotessera library, bringing TESSERA embeddings to the R ecosystem.
Comparing opam package builds across compiler variants with day10 Mark Elvers — This post walks through how to use mtelvers/day10 to compare which opam packages build successfully under two different compiler configurations.
2026-03-15 U-net example with Tessera and Torchgeo Andres Zuñiga-Gonzalez — Code %load_ext autoreload %autoreload 2 import sys sys.path.append('../src') This notebook presents a minimal example of how to create a deep learning…
Pi Day 2026: OCaml vs OxCaml Mark Elvers — For Pi Day, I have implemented the same algorithm in both OCaml and OxCaml and compared the generated assembly and runtime performance.
ONNX inference engine using OxCaml’s SIMD intrinsics Mark Elvers — Following my previous CPU vs GPU post I started thinking about what the ONNX inference engine actually did and if it could be replicated in OxCaml wit…
Building a UK Fuel Price Finder in OCaml Mark Elvers — The UK government recently launched the Fuel Finder API, providing real-time pricing data for over 7,000 petrol stations across the country.
Beaten by the bins Tom Loosemore — I’m beaten. Me and my LLMs have been beaten by the bins. I’ve spent a bunch of time and tokens failing to create a web app that lets anyon…
From Cannes to Los Angeles: Visiting the People Who Build Satellites Thomas Gazagnaire — Four years ago, Thales Alenia Space invited me into their integration hall in Cannes. I was there to sketch ideas about running the unikernel software…
GPU vs CPU for ONNX Inference: NVIDIA L4 vs AMD EPYC 9965 Mark Elvers — In a previous post, I compared the ONNX Runtime with PyTorch on the CPU and GPU. In this post, I take this to the extreme to see if a CPU can outpace …
‘Demand Management’ is doomed. Here’s how to get over it. Tom Loosemore — Anyone responsible for a public service needs to start modelling how to adapt their policies and processes for the scenario when AI Agents reduce the …
TESSERA v1 model weights now available TESSERA — The TESSERA v1 model weights are now publicly available, including the QAT checkpoint for quantized int8 inference.
OCaml Roundup: February 2026 Patrick Ferris — Much like last month, this month has been busy with lots of work on ocaml-tiff thanks to Tambe Salome and ppxlib. Outreachy Tambe Salome, at the time …
Apparently I Have Been Writing Flight Software All Along Thomas Gazagnaire — Back in 2012, Anil Madhavapeddy and I were building MirageOS as a library OS, and we started to accumulate a lot of libraries to manage manually. So I…
Work distribution with OCluster Mark Elvers — We use OCluster to manage the build cluster for the CI services backing OCaml-CI and opam-repo-ci. However, it is a general-purpose tool and isn’t t…
Weeknotes 2026 week 10 Jon Ludlam — Here are my weeknotes for the last week, while I'm still writing up some more focused posts on some specific topics - like the experience of putting e…
Following up some remarks concerning Lawful Access Richard Mortier — A few weeks ago I published some remarks I’d given on the risks of lawful access. I also tooted about them on Mastodon and Martin kindly referred to…
Vibecoding Etiquette Patrick Ferris — I am yet to jump head-first into using LLM-based tools like Claude Code or even ChatGPT to help with my programming in any serious way. After using so…
Weekly Notes - 2026-03-08 Andres Zuñiga-Gonzalez — Introduction The last two weeks have been entirely dedicated to working on the model for LCZ zones. I will talk about experiment design and some preli…
Weeknotes 2026-W10 Jon Sterling — Project Pterodactyl I’ve made a lot of progress on Project Pterodactyl this week, which I outline in my new blog post: Project Pterodactyl’s layer…
Applications Open: Post-Baccalaureate Fellowship FP Launchpad — FP Launchpad is accepting applications for its inaugural cohort of Post-Baccalaureate Fellows. We are looking for 8 Fellows to join us at IIT Madras f…
Sabbatical Diary: Week 22 Richard Mortier — Slightly belatedly,1 a more normal week. A bunch of background tasks related to my college. Numerous recommendation letters for various fellowship app…
Letting the Agents run wild – seamless Public Services? Tom Loosemore — A few days ago I shared a video of an AI Agent hosting a benefit entitlement interview. The AI Agent intuits a lot in the course of this conversation,…
OCaml-CI and native Windows builds Mark Elvers — Following from post last week about obuilder and Windows Host Compute Services, I am pleased to report that this is now running on OCaml-CI. In this e…
OCaml 5 native 32-bit backends: i386 and PPC32 Mark Elvers — Following on from the Arm32 multicore backend, I have now ported the remaining two 32-bit architectures to OCaml 5 with multicore support: i386 and Po…
Updating Cambridge VPN configuration Richard Mortier — UIS recently rolled over the certificate for the University’s VPN service, and the same update was applied to the Computer Lab’s service at the sa…
Why aquatic vegetation matters – and how evidence can help us conserve it Conservation Evidence — Nigel Taylor presents the latest Conservation Evidence synopsis - on the conservation of vegetation in inland aquatic habitats
OpenClaw MCP-enabled benefits entitlement interview Tom Loosemore — Here’s a video of a benefit entitlement conversation hosted by an AI Agent (OpenClaw Opus4.5) using my new MissingBenefit.com MCP server to do t…
Weeknotes 2026 week 9 Jon Ludlam — Let's make this really terse!
Sabbatical Diary: Weeks 19---21 / Month 5 Richard Mortier — Well, it was less runny. Though as you can probably guess from a 3-week hiatus, also unproductively busy :/ Proofread the proof of a book chapter that…
Weeknotes 2026-W09 Jon Sterling — A week at home… It’s been a couple weeks since I have been able to sit down and write my weeknotes. I thought finishing up Lecturing would give me…
In the future, our AI Agent overlords will all speak MCP Tom Loosemore — I got the train back from St Ives to London yesterday, so I bashed out an MCP server for MissingBenefit.com, the UK benefit calculator I made the othe…
Tessera Pipeline Mark Elvers — Mainly for my future reference here is a walk-through of the Tessera pipeline.
AI agents will join up government before government does Tom Loosemore — AI agents will join up government before government joins up government. This will be a mixed blessing for citizens, with big implications for trust, …
Is Running Untrusted Code on a Satellite a Good Idea? Thomas Gazagnaire — The same conversation keeps happening. I explain what Parsimoni does (run third-party software on someone else's satellite) and the response is always…
The dream of joined up government. Tom Loosemore — Back in 2012, a printout of the page above was stuck on a wall next to the team making GOV.UK. It captured the team’s desire to join up governme…
Weeknotes weeks 7-8 Jon Ludlam — A combination one again as I took some time off due to school half term.
Can you reverse engineer our neural network? Jane Street — A lot of “capture-the-flag” style ML puzzles give you a black box neural net, and your job is to figure out what it does. When we were thinking of…
Lessons from making Benefit Chatbots Tom Loosemore — I got the slow train from Totnes to St Ives on Saturday. To close off my recent vibe coding interlude, I used the MissingBenefit API I built last week…
From ASPLOS to Orbit: Unikernels Twelve Years Later Thomas Gazagnaire — Our 2013 ASPLOS paper, "Unikernels: Library Operating Systems for the Cloud", received a test-of-time award in March 2025. The title says &q…
TESSERA accepted at CVPR 2026 TESSERA — Our paper introducing TESSERA, a pixel-wise foundation model for multi-modal Earth observation time series, has been accepted at CVPR 2026.
OBuilder on Windows: Bringing Native Container Builds with the HCS Backend Mark Elvers — Following from my containerd posts last year and my previous work on obuilder backends for macOS and QEMU, this post extends obuilder to use the Host …
F Prime Looks a Lot Like MirageOS (but in C++) Thomas Gazagnaire — Last week I attended the F Prime workshop at JPL, over 100 people, from CubeSat student teams to flagship mission engineers. I learned a lot about F P…
The trials of area per pixel maps, or Michael's Holstic Detective Agency Michael Dales — This is a bit of a meandering blog post, which was meant to be about one thing, and then I had to pull in some other bits to give context, and now it …
New Year, New Blog Thomas Gazagnaire — Hello world, finally this is live :-) The last couple of weeks have been pretty intense as I've been moving to LA with my family. I am spending six mo…
Day10: opam package testing tool Mark Elvers — ocurrent/obuilder is the workhorse of OCaml CI testing, but the current deployment causes packages to be built repeatedly because the opam switch is a…
Tessera pipeline in OCaml Mark Elvers — The Tessera pipeline is written in Python. What would it take to have an OCaml version?
Weekly Notes - 2026-02-15 Andres Zuñiga-Gonzalez — Introduction This is quite a large update as it includes everything I’ve done for the past two weeks. I’ll talk about the LCZ classification and r…
Delivering effective conservation practice: the role of funders Conservation Evidence — Simon Wightman, Patricia Cremona and Sophia Cooke present some key takeaways for funders from our 'Delivering Effective Conservation Practice' meeting…
Weeknotes 2026-W07 Jon Sterling — Thinking about mutable value semantics I recently heard about a very experimental interesting language called Hylo, which is closely related to Swift …
Exploring Terminal Nav on Web Alastair Tse — I thought it would be fun experiment to build a terminal inside my own website and use it as a navigation UI. And this site is now the result of this …
The 15-Game Mark Elvers — Numberphile’s latest video has been released, and in it Ben Sparks introduces the 15 Game.
Optimizing an MP3 Codec with OCaml/OxCaml Mark Elvers — After reading Anil’s post about his zero-allocation HTTP parser httpz, I decided to apply some OxCaml optimisation techniques to my pure OCaml MP3 e…
Results from the Advent of FPGA Challenge Jane Street — At the end of last year, we decided to try something new: a challenge that would run alongside Advent of Code, where we asked the community to show us…
Windows Docker Images Mark Elvers — In my previous post on the base image builder, I included a footnote that we now had Windows 2025 workers, but I didn’t mention that the base images…
Weeknotes for week 6 Jon Ludlam — Highlights:
Snowline 2026 Alastair Tse — Snowline is a passion project of mine that has been going on for the past three years. The idea was to create a well-designed, data-driven site about …
Weeknotes 2026-W06 Jon Sterling — Welcome to Raphaël Sterbac! I’m very happy to welcome Raphaël Sterbac, a Master’s student from ENS Paris-Saclay who is joining me in Cambridge o…
Sabbatical Diary: Week 18 Richard Mortier — So. That was a rather stop-start week. It started off pretty well: as noted last week, I was in Brussels to attend FOSDEM 2026 for the first time in a…
I design with Claude more than Figma now Jane Street — For a long time I was skeptical of LLMs—whenever I reached for them I was disappointed by the results. Last year I tried Copilot and Cursor to tweak…
OCaml Roundup: January 2026 Patrick Ferris — A new year, another roundup in my open-source, OCaml activities. This month has been busy with lots of work on ocaml-tiff thanks to Tambe Salome and p…
Delivering Effective Conservation Practice – a view from a conservation practitioner Conservation Evidence — Jez Dagley shares his highlights from our recent 'Delivering Effective Conservation Practice' meeting.
Catching up with stuff Andres Zuñiga-Gonzalez — Introduction The last week was my first back in the UK, which meant that most of the week was spent reviewing where I left things in December last yea…
Package Managers à la Carte: A Formal Model of Dependency Resolution Ryan Gibb — Feb. 2026Ryan Gibb, Patrick Ferris, David Allsopp, Thomas Gazagnaire, and Anil Madhavapeddy.arXiv. Package managers are legion. Every programming lang…
Weeknotes 2026-W05 Jon Sterling — Research Group Manual: all you need is blogging! After learning about weeknotes from Anil Madhavapeddy last year, I started activating a blogging-orie…
Weeknotes for weeks 4-5 Jon Ludlam — I've been battling the seasonal illnesses this week, so I've combined two weeknotes into one. Fortunately the 'flu doesn't hold Claude back!
Sabbatical Diary: Weeks 16/17 / Months 2---4 Richard Mortier — More personal and suchlike stuff going on the last two weeks, hence the week’s gap. Felt less productive as a result, though some things got done I …
Getting Claude to complete the spec Mark Elvers — With Claude Code, perhaps we are now at the point where the test suite is actually more valuable than the code itself.
Simulating falling autumn leaves in Blender Nick Ludlam — In this article, I demonstrate how to create a realistic falling leaves simulation in Blender using geometry nodes. I talk about my process for random…
Extending RPC capabilities in OCurrent Mark Elvers — As our workflows become more agentic, CLI tools are becoming preferred over web GUIs; OCurrent pipelines are no exceptions.
Weeknotes 2026-W04 Jon Sterling — These weeknotes are very belated, and go all the way back into December. For some reason following the break I have felt almost unable to write anythi…
Some Remarks on the Risks of Lawful Access Richard Mortier — Last summer I was invited to participate in an informal meeting of the EU Standing Committee on Operational Cooperation on Internal Security (COSI). T…
Weeknotes for week 3 Jon Ludlam — First week back of 2026! Let's write some terse weeknotes.
open Core David Allsopp — On 16 December 2000, a young @dra1 stepped out on to the stage of St Martin-in-the-Fields making what would be the first of many performances of Johan…
Restarting audio Richard Mortier — I run, at least for the time being, NixOS, generally from the main / unstable branch rather than a stable release. After a recent upgrade I found audi…
Sabbatical Diary: Week 15 Richard Mortier — That feels like it was a relatively productive week :) I interviewed a couple of Ph.D. candidates—good luck! I obtained a short extension to the EU …
Base Image Builder Mark Elvers — The base image builder has a growing number of failed builds; it’s time to address these.
Updating ARM64 Workers to Ubuntu Noble Mark Elvers — Early in the upgrade program for Ubuntu 24.04, there were permission issues when extracting tar files. The workaround was to update to the latest dev …
Could geospatial foundation models help improve conservation effectiveness? Conservation Evidence — Julia Jones describes how new artificial intelligence models could improve conservation effectiveness, based on a workshop at our recent 'Delivering E…
Opening up old release branches David Allsopp — The spring-cleaning continues! When I originally prototyped Relocatable OCaml, it was during the OCaml 4.13 development cycle. The focus for the work …
Extracting ramblings Richard Mortier — Over a number of years—in fact, my word, decades—recorded my GPS tracks and taken photos when I go walking.1 Over the years I’ve used a range of…
Earth Observation on a Budget: Finding Solar Farms with a 42k-Parameter Model Sadiq Jaffer — Satellite imagery analysis doesn't always require massive data and compute. We show how to combine open data from OpenStreetMap and the UK Government'…
Ai4Nature officially launched: from shared principles to collective action AI4Nature — On Wednesday 14 January, we officially launched the Ai4Nature Alliance at IET London: Savoy Place, bringing together leaders from ecology, policy, aca…
Installation from recovery console Mark Elvers — Over the weekend, one of the NVMe drives in pima failed, which brought down the whole system.
Moving to opam 2.5 Mark Elvers — opam 2.5.0 was released on 27th November, and this update needs to be propagated through the CI infrastructure. This post mirrors the steps taken for …
2025 in review Andres Zuñiga-Gonzalez — Late to the party as it’s already mid-January, but here’s a quick review of 2025. I will mostly talk about the projects I’ve worked on, events I…
Pinning packages Richard Mortier — I run NixOS for the time being, usually tracking unstable. As a result, I have from time to time found myself wanting to pin a package to a particular…
Base Fibonacci Mark Elvers — In Numberphile’s latest video, Tony Padilla does a ‘magic trick’ with Fibonacci numbers and talks about Zeckendorf decompositions, and I had my …
Forging compilers in opam David Allsopp — As we settle into 2026, I have been doing a little early spring-cleaning. A few years ago, we had a slightly chaotic time in opam-repository over what…
OCaml Roundup: December 2025 Patrick Ferris — December was busy, both personally and in my OCaml-related work. If you haven't been following along have a read of my October and November roundups. …
More OCaml on Pi Pico 2 W Mark Elvers — Extending the Pico 2 implementation to add effects-based WiFi networking and improve the build system.
Sabbatical Diary: Week 14 Richard Mortier — The calendar year started with some sysadmin work. Had to get devices reconnected to eduroam and Internal-CL Wi-Fi networks which was happily quite st…
Ceph Notes Mark Elvers — We now have 209 TB of data on a seven-node Ceph cluster. Here are some further notes on using Ceph.
The Ray Tracer Challenge Michael Dales — For the last few years I've spent the run up to the festive break working on something graphical, and this year whilst I was a little late to start, I…
Fun with Algebraic Effects - from Toy Examples to Hardcaml Simulations Jane Street — I recently ported the Hardcaml_step_testbench library, one of the libraries that we use at Jane Street for Hardcaml simulations, from using monads to …
Updating `eduroam` Richard Mortier — The University recently rolled its public certificate for eduroam and the old one was dropped a couple of days ago. So double-checking that all device…
Sabbatical Diary: Week 13 Richard Mortier — Nothing of note done, work-wise, for the last week or so. Hey, it was the holidays. Which meant a lot of driving around, and I find it difficult to do…
Hello World with Gaussian Splats Dave Scott — An interactive 3D Gaussian splat viewer showing a scene reconstructed from a photo using Apple's ml-sharp library.
Opam’s Nix system dependency mechanism Ryan Gibb — Jan. 2026Ryan Gibb.Free and Open Source Software Developers’ European Meeting (FOSDEM). The OCaml language package manager, Opam, has support for in…
Package managers à la carte: A Formal Model of Dependency Resolution Ryan Gibb — Jan. 2026Ryan Gibb.Free and Open Source Software Developers’ European Meeting (FOSDEM). Package managers are legion. Every language and operating sy…
Eilean: Self-hosted digital islands Ryan Gibb — Jan. 2026Ryan Gibb.Free and Open Source Software Developers’ European Meeting (FOSDEM). Our digital lives are increasingly fragmented across numerou…























