# Programming for the Planet at ICFP/SPLASH 2025

*2025-10-05 — note*


This is part 1 of 5 of a [series](https://anil.recoil.org/notes/icfp25) of posts[^1] about ICFP 2025.

The [first outing](https://popl24.sigplan.org/home/propl-2024) of PROPL was
last year in London, and this time around [Dominic Orchard](https://dorchard.github.io) and I invited [KC Sivaramakrishnan](https://kcsrk.info) to be
the PC chair and [held it at ICFP/SPLASH](https://anil.recoil.org/notes/propl-at-splash). The uptake was
encouraging, and we got enough submissions to have a proper [published
proceedings](https://dl.acm.org/doi/proceedings/10.1145/3759536) in the ACM
Digital Library for the first time! Our [proceedings summary](https://anil.recoil.org/papers/2025-propl)
is a quick read to give you an idea of the breadth of the papers and talks this year.

<a href="https://dl.acm.org/action/showFmPdf?doi=10.1145%2F3759536"> <figure class="image-center"><img src="/images/propl25-header.webp" alt="A summary of the 6 papers, 9 talks and provocations that appeared." title="A summary of the 6 papers, 9 talks and provocations that appeared." loading="lazy" srcset="/images/propl25-header.768.webp 768w, /images/propl25-header.640.webp 640w, /images/propl25-header.480.webp 480w, /images/propl25-header.320.webp 320w, /images/propl25-header.1920.webp 1920w, /images/propl25-header.1600.webp 1600w, /images/propl25-header.1440.webp 1440w, /images/propl25-header.1280.webp 1280w, /images/propl25-header.1024.webp 1024w"><figcaption>A summary of the 6 papers, 9 talks and provocations that appeared.</figcaption></figure> </a>


The workshop itself had slightly less in-person attendance than last year, but
this was due to the heavily multi-track structure of ICFP. We had less [total
time](https://conf.researchr.org/home/icfp-splash-2025/propl-2025#program) than
last year as the morning slot was taken up by the ICFP keynote (the
awesome [Satnam Singh](https://raintown.org)), and with six parallel sessions people were filtering in and
out of all the events. The online attendance made up for it, with quite a few
people tracking the [SIGPLAN live
stream](https://www.youtube.com/watch?v=IIRJeleXeuU).

The [papers](https://dl.acm.org/doi/proceedings/10.1145/3759536) were exactly
what I'd dreamed would happen -- a variety of practitioners describing their
computational challenges mixed together with solutions. I'll summarise the day's
proceedings next\!

<a href="/slides/propl25-intro.pdf"> <figure class="image-center"><img src="/images/icfp-6.webp" alt="Dominic Orchard opening the PROPL25 workshop" title="Dominic Orchard opening the PROPL25 workshop" loading="lazy" srcset="/images/icfp-6.768.webp 768w, /images/icfp-6.640.webp 640w, /images/icfp-6.480.webp 480w, /images/icfp-6.3840.webp 3840w, /images/icfp-6.320.webp 320w, /images/icfp-6.2560.webp 2560w, /images/icfp-6.1920.webp 1920w, /images/icfp-6.1600.webp 1600w, /images/icfp-6.1440.webp 1440w, /images/icfp-6.1280.webp 1280w, /images/icfp-6.1024.webp 1024w"><figcaption>Dominic Orchard opening the PROPL25 workshop</figcaption></figure> </a>

## Computational challenges

The first batch of talks I'll cover were about how to specify some core
computational models related to climate and biodiversity science.

Firstly, climate modelling was up with Chinmayi Prabhu
[presenting](https://www.youtube.com/watch?v=IIRJeleXeuU&t=18092s) a paper on
[climate model coupler verification](https://dl.acm.org/doi/10.1145/3759536.3763801) that discussed
the difficulty of folding multiple global climate models into combined ones,
something that is normally done via (underspecified and somewhat black magic)
[coupler](https://www.metoffice.gov.uk/research/climate/understanding-climate/coupled-modelling)
components. Chinmayi had found some bugs in production coupler code, and
described a hybrid verification strategy that used both static and runtime
techniques to improve the state of affairs.

> The continuous exchange of data through couplers creates the risk of subtle
> errors propagating across components, potentially distorting scientific
> conclusions. In this paper, we argue for lightweight formal verification
> techniques applied at the coupler interface to improve both coupler and model
> correctness.
> <cite>\-- [Towards Modelling and Verification of Coupler Behaviour in Climate Models](https://dl.acm.org/doi/10.1145/3759536.3763801)</cite>

<a href="https://www.youtube.com/watch?v=IIRJeleXeuU&t=18092s"> <figure class="image-center"><img src="/images/icfp-11.webp" alt="Chinmayi Prabhu Baramashetru presenting her work on climate coupler verification" title="Chinmayi Prabhu Baramashetru presenting her work on climate coupler verification" loading="lazy" srcset="/images/icfp-11.768.webp 768w, /images/icfp-11.640.webp 640w, /images/icfp-11.480.webp 480w, /images/icfp-11.3840.webp 3840w, /images/icfp-11.320.webp 320w, /images/icfp-11.2560.webp 2560w, /images/icfp-11.1920.webp 1920w, /images/icfp-11.1600.webp 1600w, /images/icfp-11.1440.webp 1440w, /images/icfp-11.1280.webp 1280w, /images/icfp-11.1024.webp 1024w"><figcaption>Chinmayi Prabhu Baramashetru presenting her work on climate coupler verification</figcaption></figure> </a>

Then we [heard](https://youtu.be/IIRJeleXeuU?t=12711) about [hydrology modeling using GPUs](https://dl.acm.org/doi/10.1145/3759536.3763805) over in India, where
algorithms to trace the path of surface water flows (e.g. flow accumulation,
watershed delineation or runoff simulation) are hard to execute for large areas
at reasonably fine spatial and temporal resolutions.

> Libraries like GDAL that use multi-threaded CPU-based implementations running
> on a single host may be slow, and distributed infrastructures like Google
> Earth Engine may not support the kind of computational primitives required by
> these algorithms.
> 
> We have developed a GPU-accelerated framework that
> re-engineers these four algorithms and is able to process areas as large as
> river basins of 250,000 km2 on commodity GPU workstations.
> <cite>\-- [GPU-Accelerated Hydrology Algorithms for On-Prem Computation](https://dl.acm.org/doi/10.1145/3759536.3763805)</cite>

[Aadi Seth](https://www.cse.iitd.ac.in/~aseth/) explained not only the basics of flow algorithms, but why it's
essential to GPU accelerate them to get a reasonable spatial scale and
resolution. They ended up with a set of small parallelizable primitives that are either
pixel independent, or a sequence of 'long pixel' operations that need more
coordination.

<a href="https://youtu.be/IIRJeleXeuU?t=12711"> <figure class="image-center"><img src="/images/icfp-13.webp" alt="Aadi Seth presenting his work on hydrology modeling in India" title="Aadi Seth presenting his work on hydrology modeling in India" loading="lazy" srcset="/images/icfp-13.768.webp 768w, /images/icfp-13.640.webp 640w, /images/icfp-13.480.webp 480w, /images/icfp-13.320.webp 320w, /images/icfp-13.2560.webp 2560w, /images/icfp-13.1920.webp 1920w, /images/icfp-13.1600.webp 1600w, /images/icfp-13.1440.webp 1440w, /images/icfp-13.1280.webp 1280w, /images/icfp-13.1024.webp 1024w"><figcaption>Aadi Seth presenting his work on hydrology modeling in India</figcaption></figure> </a>

Continuing on in the previous theme of novel computation models, [Michael Dales](https://mynameismwd.org) presented "[Yirgacheffe: A Declarative Approach to Geospatial Data](https://anil.recoil.org/papers/2025-yirgacheffe)",
a new [Python library](https://yirgacheffe.org) that
allows spatial algorithms to be implemented concisely and supports parallel
execution and resource management. *([read more...](https://digitalflapjack.com/weeknotes/2025-10-13/))*

Michael used our work on the [LIFE biodiversity metric](https://anil.recoil.org/papers/2024-life) as the
motivating usecase [for his demo](https://digitalflapjack.com/weeknotes/2025-10-13/), as we have petabytes
of rasters processed using Yirgacheffe.  He also set up a nice [new
homepage](https://yirgacheffe.org) for the project and used PROPL to launch it,
including [adopting](https://digitalflapjack.com/blog/marimo/) a shiny new
executable notebook called [Marimo](https://marimo.io) which I liked the look
of\!

<a href="https://www.youtube.com/live/IIRJeleXeuU?t=23927s"> <figure class="image-center"><img src="/images/icfp-36.webp" alt="Michael Dales showing the LIFE biodiversity map calculated using Yirgacheffe" title="Michael Dales showing the LIFE biodiversity map calculated using Yirgacheffe" loading="lazy" srcset="/images/icfp-36.768.webp 768w, /images/icfp-36.640.webp 640w, /images/icfp-36.480.webp 480w, /images/icfp-36.320.webp 320w, /images/icfp-36.1920.webp 1920w, /images/icfp-36.1600.webp 1600w, /images/icfp-36.1440.webp 1440w, /images/icfp-36.1280.webp 1280w, /images/icfp-36.1024.webp 1024w"><figcaption>Michael Dales showing the LIFE biodiversity map calculated using Yirgacheffe</figcaption></figure> </a>

## Geospatial data management

Switching tack from computation to managing large-scale datasets, we had a
number of papers discussing how to orchestrate these both for full execution
but also in a developer friendly way for local use.

The first extremely ambitious [talk](https://youtu.be/IIRJeleXeuU?t=4536) was from [Jean-Michel Lord](https://orcid.org/0009-0007-3826-1125) who
presented ["Programming Opportunities for the Global Biodiversity Observation Network"](https://anil.recoil.org/papers/2025-programming-gbon). GEOBON is a [global network](https://earthobservations.org/groups/geo-biodiversity-observation-network) of researchers dedicated to improving the acquisition, coordination and delivery of biodiversity information at a global scale. This PROPL collaboration came up up after I met [Andrew Gonzalez](https://www.thegonzalezlab.org/) at the
[NAS](https://anil.recoil.org/notes/nas-rs-biodiversity) earlier in the year and learnt about [BON-in-a-Box](https://boninabox.geobon.org/), which uses [Docker under the hood](https://www.tunbury.org/2025/07/02/bon-in-a-box/)\!

<a href="https://youtu.be/IIRJeleXeuU?t=4536"> <figure class="image-center"><img src="/images/icfp-8.webp" alt="Jean-Michel Lord illustrates the technology stack behind BON-in-a-Box" title="Jean-Michel Lord illustrates the technology stack behind BON-in-a-Box" loading="lazy" srcset="/images/icfp-8.768.webp 768w, /images/icfp-8.640.webp 640w, /images/icfp-8.480.webp 480w, /images/icfp-8.3840.webp 3840w, /images/icfp-8.320.webp 320w, /images/icfp-8.2560.webp 2560w, /images/icfp-8.1920.webp 1920w, /images/icfp-8.1600.webp 1600w, /images/icfp-8.1440.webp 1440w, /images/icfp-8.1280.webp 1280w, /images/icfp-8.1024.webp 1024w"><figcaption>Jean-Michel Lord illustrates the technology stack behind BON-in-a-Box</figcaption></figure> </a>

Jean-Michel described how off-the-shelf software could (almost) be enough to integrate the world's biodiversity dataset pipelines, but needed some help from their maintainers. Most notably, BON-in-a-box facilitates peer review of _computation pipelines_ (as opposed to the science underpinning them), which is the first time I've seen peer review applied to scientific code. This "connecting the dots" across diverse biodiversity datasets is vital towards building a comprehensive model of life on this planet, and computer science is a crucial piece of the puzzle to make sense of all the data. [Andrew Gonzalez](https://www.thegonzalezlab.org/) also just announced that all the major players are getting together later this month at the [Living Data 2025](https://www.livingdata2025.com/) conference in Colombia, further underlying how timely getting [involved](https://www.linkedin.com/posts/andrew-gonzalez-23589146_livingdata2025-boninabox-biodiversitymonitoring-activity-7386243770066817024-SV57) with BON-in-a-Box is.

[Aadi Seth](https://www.cse.iitd.ac.in/~aseth/) had a second paper on the challenge of building [spatio-temporal catalogue dataflow
graphs](https://dl.acm.org/doi/10.1145/3759536.3763803). These
[catalogues](https://stacspec.org/en/) are really important in environmental
science to [connect the dots](https://anil.recoil.org/notes/nas-rs-biodiversity) in the often "gappy" field
datasets. The STAC-D extension proposes dataflow pipelines to help compose
these together via YAML specifications that describe dependencies between the
(large) datasets involved.

> We propose STACD (STAC extension with DAGs), an extension to STAC
> specifications that incorporates Directed Acyclic Graph (DAG) representations
> along with defining algorithms and version changes in the workflows. We also
> provide a reference implementation on Apache Airflow to demonstrate STACD
> capabilities such as selective recomputation when some datasets or algorithms
> in a DAG are updated, complete lineage construction for a dataset, and
> opportunities for improved collaboration and distributed processing that
> arise with this standard.
> <cite>\-- [STAC Extension with DAGs](https://dl.acm.org/doi/10.1145/3759536.3763803)<cite>

This one really reminded me of the work I did ages ago with [Derek G Murray](https://research.google/people/derekmurray/?&type=google) and [Malte Schwarzkopf](https://cs.brown.edu/people/malte/)
on the [CIEL execution engine](https://anil.recoil.org/papers/2011-nsdi-ciel). Dynamic dataflow graphs seem
to come up again and again as the beating heart of coordination languages, and
we've made surprisingly little progress in making them more ergonomic. Some
combination of Docker and [Build Systems à la Carte](https://simon.peytonjones.org/assets/pdfs/build-systems-jfp.pdf) would
go a long way here\!

The third [talk](https://www.youtube.com/watch?v=IIRJeleXeuU&t=6053s) was from the the [Catalysts Foundation](https://catalysts.org)
from India, and highlighted the importance of data science for promoting health
and wellbeing in some of the most vulnerable rural communities, who are at
serious risks of increasing intensity due to climate change.

> Climate change presents multifaceted public health challenges, from
> heat-related mortality and vector-borne disease expansion to water
> contamination and respiratory ailments. The [2022 Lancet Countdown Report](https://doi.org/10.1016/S0140-6736%2822%2901540-9)
> demonstrates a host of health effects of climate change ranging from
> heat-related illness and mortality to the spread of vector-borne and
> water-borne pathogens, to rising food insecurity as cropping patterns change.
> Current public health systems lack integrated, real-time data capabilities to
> identify vulnerable populations and coordinate timely responses to these
> climate-induced health threats, particularly in resource-constrained
> settings.
> <cite>\-- [Precision Action Towards Climate and Health (PATCH)](https://conf.researchr.org/details/icfp-splash-2025/propl-2025-papers/9/Precision-Action-Towards-Climate-and-Health-PATCH-)</cite>

<a href="https://www.youtube.com/watch?v=IIRJeleXeuU&t=6053s"> <figure class="image-center"><img src="/images/icfp-9.webp" alt="Prerak Shah shows the increasing risks faced by rural Indian communities" title="Prerak Shah shows the increasing risks faced by rural Indian communities" loading="lazy" srcset="/images/icfp-9.768.webp 768w, /images/icfp-9.640.webp 640w, /images/icfp-9.480.webp 480w, /images/icfp-9.320.webp 320w, /images/icfp-9.2560.webp 2560w, /images/icfp-9.1920.webp 1920w, /images/icfp-9.1600.webp 1600w, /images/icfp-9.1440.webp 1440w, /images/icfp-9.1280.webp 1280w, /images/icfp-9.1024.webp 1024w"><figcaption>Prerak Shah shows the increasing risks faced by rural Indian communities</figcaption></figure> </a>

Prerak talked about the difficulty of combining geospatial data with machine
learning inference, and keeping track of the resulting outputs in a systematic
way. What I found particularly interesting about their "PATCH" system is that it not
only has core computing facilities (a health reporting platform, a spatial counterfactual
map for interventions and a communications channel for different stakeholders), but they
also extensively partner with local state governments in India (like the India [Meteorological Department](https://en.wikipedia.org/wiki/India_Meteorological_Department) and the [All India Institutes of Medical Sciences](https://www.aiims.edu/index.php/en).

[Patrick Ferris](https://patrick.sirref.org) formalised many of the above problems with his thoughtful [seminar](https://youtu.be/IIRJeleXeuU?t=15374) on "what we talk about when we talk about scientific programming". Patrick came up with three axes along which the scientific method of hypothesis falsification needs to operate when dealing with computational data: dynamism, scale and access controls. If you'd like to read more about Patrick's thoughts on this topic, his paper last year on "[Uncertainty at scale: how CS hinders climate research](https://anil.recoil.org/papers/2024-uncertainty-cs)" is also well worth a read.
 
<a href="https://youtu.be/IIRJeleXeuU?t=15374"> <figure class="image-center"><img src="/images/icfp-31.webp" alt="Patrick Ferris discusses difficult usecases for geospatial scientific computing" title="Patrick Ferris discusses difficult usecases for geospatial scientific computing" loading="lazy" srcset="/images/icfp-31.768.webp 768w, /images/icfp-31.640.webp 640w, /images/icfp-31.480.webp 480w, /images/icfp-31.320.webp 320w, /images/icfp-31.2560.webp 2560w, /images/icfp-31.1920.webp 1920w, /images/icfp-31.1600.webp 1600w, /images/icfp-31.1440.webp 1440w, /images/icfp-31.1280.webp 1280w, /images/icfp-31.1024.webp 1024w"><figcaption>Patrick Ferris discusses difficult usecases for geospatial scientific computing</figcaption></figure> </a>

All these talks highlighted the difficulty of managing large and often very messy datasets in practise. So how do we move towards more principled platforms to fix the situation? That's what the next group of talks covered\!

## Towards a giant planetary wiki of code

By far my favourite aspect of PROPL was he sheer ambition on display when it
comes to leveraging the network effects around computer technology to
accelerate the pace of environmental action. The next batch of papers is all
about evolving notebooks to be global scale\!

[Cyrus Omar](https://web.eecs.umich.edu/~comar/) led the charge with his [call](https://youtu.be/IIRJeleXeuU?t=16533) to action for "[A FAIR Case for a Live Computational Commons](https://anil.recoil.org/papers/2025-fairground)", which
he described as a live planetary wiki! What is needed to turn something like
Wikipedia into a live, updated computation graph with incremental, real-time
visualisation? This would effectively be one giant program running and being
updated by tens of thousands of contributors in real time.

> This paper proposes Fairground, a computational commons designed as a
> collaborative notebook system where thousands of scientific artifacts are
> authored, collected, and maintained together in executable form in a manner
> that is [FAIR](https://en.wikipedia.org/wiki/FAIR_data), reproducible, and
> live by default. Unlike existing platforms, Fairground notebooks can
> reference each other as libraries, forming a single planetary-scale live
> program executed by a distributed scheduler.
> <cite>\-- [A FAIR Case for a Live Computational Commons](https://anil.recoil.org/papers/2025-fairground.pdf), Omar et al 2025</cite>

 Many of the answers to how to do this lay in the talks at this week's
ICFP/SPLASH: programming languages with clean semantics for incremental
compilation, purely functional with effect tracking, and mergeable semantics
for managing large scale data structures. Cyrus' own [Hazel](https://hazel.org)
language is a perfect example of an ergonomic interactive language that has
clean, functional semantics while retaining usability.

<a href="https://youtu.be/IIRJeleXeuU?t=16533"> <figure class="image-center"><img src="/images/icfp-32.webp" alt="Cyrus Omar lays out his vision for a FAIR planetary wiki" title="Cyrus Omar lays out his vision for a FAIR planetary wiki" loading="lazy" srcset="/images/icfp-32.768.webp 768w, /images/icfp-32.640.webp 640w, /images/icfp-32.480.webp 480w, /images/icfp-32.3840.webp 3840w, /images/icfp-32.320.webp 320w, /images/icfp-32.2560.webp 2560w, /images/icfp-32.1920.webp 1920w, /images/icfp-32.1600.webp 1600w, /images/icfp-32.1440.webp 1440w, /images/icfp-32.1280.webp 1280w, /images/icfp-32.1024.webp 1024w"><figcaption>Cyrus Omar lays out his vision for a FAIR planetary wiki</figcaption></figure> </a>

[Roly Perera](https://dynamicaspects.org/research/) then switched tack and
[discussed](https://youtu.be/IIRJeleXeuU?t=13998) how we might achieve more
transparent climate reporting, via a new class of "transparent programming
languages" like his own [Fluid](https://f.luid.org/) project.

> With traditional print media, the figures, text and other content are
> disconnected from the underlying data, making them hard to understand,
> evaluate and trust. Digital media, such as online papers and articles,
> present an opportunity to make visual artifacts which are connected to data
> and able to reveal those fine-grained relationships to an interested user.
> This would enable research outputs, news articles and other data-driven
> artifacts to be more transparent, self-explanatory and explorable .
> <cite> -- [fluid, explorable, self-explanatory research outputs](https://f.luid.org/)

Roly showed in his talk how the latest advances in Fluid helped to automate
providing "drill down" explanations for topics in the energy transition and
decarbonisation, adaptation to climate change, or risk mitigation strategies
that required policy changes justified by data.

<a href="https://youtu.be/IIRJeleXeuU?t=13998"> <figure class="image-center"><img src="/images/icfp-30.webp" alt="Roly Perera presents his Fluid language" title="Roly Perera presents his Fluid language" loading="lazy" srcset="/images/icfp-30.768.webp 768w, /images/icfp-30.640.webp 640w, /images/icfp-30.480.webp 480w, /images/icfp-30.3840.webp 3840w, /images/icfp-30.320.webp 320w, /images/icfp-30.2560.webp 2560w, /images/icfp-30.1920.webp 1920w, /images/icfp-30.1600.webp 1600w, /images/icfp-30.1440.webp 1440w, /images/icfp-30.1280.webp 1280w, /images/icfp-30.1024.webp 1024w"><figcaption>Roly Perera presents his Fluid language</figcaption></figure> </a>

The [Fluid website](https://f.luid.org/) has loads of interactive examples
for you to explore, so continue on there if interested in this topic.

[Cristian Urlea](https://www.gla.ac.uk/schools/computing/staff/cristianurlea/) then discussed the crucial problem of [Bridging Disciplinary Gaps in
Climate Research](https://dl.acm.org/doi/10.1145/3759536.3763804), since the
point of all these planetary computing systems is to make them accessible to
non-computer-science-expert users (the "[vernacular programmers](https://dl.acm.org/doi/pdf/10.1145/3480947)").

> Current scientific computing practices pose major barriers to entry,
> particularly for interdisciplinary researchers and those in low and
> middle-income countries (LMICs). Challenges include steep learning curves,
> limited access to expert support, and difficulties with legacy or
> under-documented software. Drawing on real-world experiences, we identify
> recurring obstacles in the usability, accessibility, and sustainability of
> scientific software.
> <cite>\-- [Bridging Disciplinary Gaps in Climate Research](https://dl.acm.org/doi/10.1145/3759536.3763804), 2025</cite>

I greatly enjoyed the framing of this paper of "reimagining scientific
programming as a shared public good", a point also made by Roberto Di Cosmo
recently in his [Nature comment](https://www.nature.com/articles/d41586-025-03196-0) that we must stop
treating code like an afterthought, and instead record, share and value it.

## Onto Programming the Planet\!

Once we have all these planetary scale notebooks, what sorts of new programs
might we run on them? The last group of talks covered some radically different
ideas here, and I was involved with all of them\!

First, [Sadiq Jaffer](https://toao.com) and [Robin Young](https://www.cst.cam.ac.uk/people/ray25) [presented](https://youtu.be/IIRJeleXeuU?t=21133) our own [TESSERA](https://github.com/ucam-eo/geotessera) project, which is a new geospatial foundation model for programming with observations of the planet from space. This is pretty scifi stuff\!

> Remote sensing observations from satellites are critical for scientists to
> understand how our world is changing in the face of climate change,
> biodiversity loss, and desertification. However, working directly with this
> data is difficult. For any given satellite constellation, there are a
> multitude of processed products, data volume is considerable, and for optical
> imagery, users must contend with data sparsity due to cloud cover. This
> complexity creates a significant barrier for domain experts who are not
> specialists.
> 
> Pre-trained, self-supervised foundation models such as [TESSERA](https://arxiv.org/abs/2506.20380) aim to solve this by offering pre-computed
> global embeddings. These rich embeddings can be used in-place of raw remote
> sensing data in a powerful “embedding-as-data” approach. For example, a
> single 128-dimensional TESSERA embedding for a 10-meter point on Earth can
> substitute for an entire year of optical and radar imagery, representing its
> temporal and spectral characteristics. While this could democratise access to
> advanced remote sensing-derived analytics, it also creates a new programming
> challenge: a lack of tools designed for this new approach.
> 
> <cite>\-- [Building a Usable Library for Planetary-Scale Embeddings](https://conf.researchr.org/details/icfp-splash-2025/propl-2025-papers/14/Challenges-in-Practice-Building-a-Usable-Library-for-Planetary-Scale-Embeddings), Jaffer 2025</cite>

<a href="https://youtu.be/IIRJeleXeuU?t=21133"> <figure class="image-center"><img src="/images/icfp-12.webp" alt="Sadiq Jaffer shows how to detect all the solar farms on the planet using TESSERA" title="Sadiq Jaffer shows how to detect all the solar farms on the planet using TESSERA" loading="lazy" srcset="/images/icfp-12.768.webp 768w, /images/icfp-12.640.webp 640w, /images/icfp-12.480.webp 480w, /images/icfp-12.3840.webp 3840w, /images/icfp-12.320.webp 320w, /images/icfp-12.2560.webp 2560w, /images/icfp-12.1920.webp 1920w, /images/icfp-12.1600.webp 1600w, /images/icfp-12.1440.webp 1440w, /images/icfp-12.1280.webp 1280w, /images/icfp-12.1024.webp 1024w"><figcaption>Sadiq Jaffer shows how to detect all the solar farms on the planet using TESSERA</figcaption></figure> </a>

Sadiq did a live demo by demonstrating the
[Geotessera](https://github.com/ucam-eo/geotessera) Python library I've been
[hacking on](https://anil.recoil.org/notes/geotessera-python). He went one step further and coded up a
simple classifier that found most of the solar farms on the planet, with a demo
that ran in minutes on his laptop\!

After this, [Andres Zuñiga-Gonzalez](https://ancazugo.github.io/) [showed](https://youtu.be/IIRJeleXeuU?t=25009) how he's been using airborne data to uncover socioeconomic stratification of urban nature in England, all via a pipeline that combines all sorts of geospatial algorithms to distill metrics about modern urban life.

> Using high-resolution LiDAR (Vegetation Object Model), Sentinel 2 imagery,
> and open geospatial datasets for over 28 million buildings across England, we
> integrate raster, vector, and socioeconomic data within a scalable
> computational framework. Tree segmentation was performed using adaptive
> local-maximum filtering, canopy cover estimated at 1 m resolution, and park
> accessibility derived from network-based walking distances.
> 
> Inequality in access to nature was quantified via Gini coefficients and
> modelled with spatial error regressions against socioeconomic deprivation.
> Our results reveal that while most urban areas meet the 3-tree proximity
> rule, fewer than 3% achieve 30% canopy cover, and only a minority satisfy all
> three components simultaneously.
> <cite>\-- [Airborne assessment uncovers socioeconomic stratification of urban nature in England](https://anil.recoil.org/papers/2025-england-nature)</cite>

<a href="https://youtu.be/IIRJeleXeuU?t=25009"> <figure class="image-center"><img src="/images/icfp-14.webp" alt="Andres sketches out the 3-30-300 rule of urban nature access" title="Andres sketches out the 3-30-300 rule of urban nature access" loading="lazy" srcset="/images/icfp-14.768.webp 768w, /images/icfp-14.640.webp 640w, /images/icfp-14.480.webp 480w, /images/icfp-14.320.webp 320w, /images/icfp-14.2560.webp 2560w, /images/icfp-14.1920.webp 1920w, /images/icfp-14.1600.webp 1600w, /images/icfp-14.1440.webp 1440w, /images/icfp-14.1280.webp 1280w, /images/icfp-14.1024.webp 1024w"><figcaption>Andres sketches out the 3-30-300 rule of urban nature access</figcaption></figure> </a>

You can read more about this in his [preprint](https://anil.recoil.org/papers/2025-england-nature) that
explains in detail the programming pipeline (including route finding across
tree canopies across the whole of England), and the bigger picture behind
[3-30-300 mapping](https://anil.recoil.org/ideas/urban-vegetation).

And last but definitely not least, [Ryan Gibb](https://ryan.freumh.org) [presented](https://youtu.be/IIRJeleXeuU?t=22918) possibly the most topical
talk for a programming language venue: repurposing the classic Robin Milner
[bigraphs](https://en.wikipedia.org/wiki/Bigraph) for environmental goodness\!
Ryan (and [Josh Millar](https://profiles.imperial.ac.uk/joshua.millar22)) observe that existing distributed computing models poorly
capture spatial structure, hindering dynamic collaboration and access control.
They argue that that space must be treated as a first-class concept in
programming models, and use this to better coordinate the complex sensor
systems we need for environmental science.

<a href="https://youtu.be/IIRJeleXeuU?t=22918"> <figure class="image-center"><img src="/images/icfp-35.webp" alt="Ryan Gibb goes full bigraph using Roy Ang's OSM translation!" title="Ryan Gibb goes full bigraph using Roy Ang's OSM translation!" loading="lazy" srcset="/images/icfp-35.768.webp 768w, /images/icfp-35.640.webp 640w, /images/icfp-35.480.webp 480w, /images/icfp-35.320.webp 320w, /images/icfp-35.2560.webp 2560w, /images/icfp-35.1920.webp 1920w, /images/icfp-35.1600.webp 1600w, /images/icfp-35.1440.webp 1440w, /images/icfp-35.1280.webp 1280w, /images/icfp-35.1024.webp 1024w"><figcaption>Ryan Gibb goes full bigraph using Roy Ang's OSM translation!</figcaption></figure> </a>

It was also wonderful to see Roy Ang attend the workshop, as it was his [Part II project](https://anil.recoil.org/ideas/bigraphs-real-world) which imported
[OpenStreetMap](https://openstreetmap.org) into [BigraphER](https://uog-bigraph.bitbucket.io/) that sparked off the idea in the first place.
You may also be interested in our preprint "[An Architecture for Spatial Networking](https://anil.recoil.org/papers/2025-bifrost)" that explores this concept of spatial networking in more detail.

# Reflections on the 2nd PROPL

As always, the corridor track of discussions after the conference was the most valuable part of attending PROPL. We had the opportunity to put up some posters during the main banquet session, and it was busy\!

<div class="video-center"><iframe title="" width="100%" height="315px" src="https://crank.recoil.org/videos/embed/83e457b1-76d0-4e7e-b65f-be35544750c7" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe></div>

One thing that leapt out at me from the discussions was the need for a _hosted_ service with the ergonomics of Docker, the interactive flexibility of Jupyter, the peer community of Wikipedia, and the semantic cleanliness of Hazel. This is overwhelmingly difficult to do in a topdown manner, but we do have now a growing community of practitioners and computer scientists who share a vision of making this happen. I had long conversations with most of the attendees of PROPL about how we might make this a reality, and my plan is spend a good chunk of my sabbatical time this year hacking on this.

The other really energizing thing was seeing all the side hacking going on. I
spotted [Patrick Ferris](https://patrick.sirref.org) porting all the Python Geotessera code over to OCaml in a
skunkworks effect of which I heartily approve. I looked over the Hazel UI with
[Cyrus Omar](https://web.eecs.umich.edu/~comar/) to figure out what a planetary view might look like. [Aadi Seth](https://www.cse.iitd.ac.in/~aseth/) figured
out spatial datastructures for the CoRE stack with [Ryan Gibb](https://ryan.freumh.org) and [Andres Zuñiga-Gonzalez](https://ancazugo.github.io/) while we
stood around in the blazing Singapore heat. [Michael Coblenz](https://cseweb.ucsd.edu/~mcoblenz/) lead a [session at
HATRA](https://conf.researchr.org/details/icfp-splash-2025/hatra-2025-papers/8/Discussion)
on user centric approaches to types and reasoning assistants.

All of these strands could weave together powerfully into groundup systems that
solve the problems we've been defining at PROPL! I'm feeling
[energized](https://youtu.be/IIRJeleXeuU?t=26691) and tired, and look forward
to continuing the discussions started in London (2024) and Singapore (2025)
into real systems in 2026\!

<figure class="image-center"><img src="/images/icfp-33.webp" alt="Ilya Sergey had the genius idea of having a fridge magnet boothat the reception, which the organising committee for PROPL took full advantage of. See my fridge for more." title="Ilya Sergey had the genius idea of having a fridge magnet boothat the reception, which the organising committee for PROPL took full advantage of. See my fridge for more." loading="lazy" srcset="/images/icfp-33.768.webp 768w, /images/icfp-33.640.webp 640w, /images/icfp-33.480.webp 480w, /images/icfp-33.320.webp 320w, /images/icfp-33.1024.webp 1024w"><figcaption>Ilya Sergey had the genius idea of having a fridge magnet boothat the reception, which the organising committee for PROPL took full advantage of. See my fridge for more.</figcaption></figure>

<figure class="image-center"><img src="/images/icfp-34.webp" alt="As a metaphor about the race we are running to mitigate the worst effects of climate change using computer science, I left Sadiq in the dust at the Skyline Luge. We were both outclassed soundly by a bunch of ten year olds who had just finished school, however." title="As a metaphor about the race we are running to mitigate the worst effects of climate change using computer science, I left Sadiq in the dust at the Skyline Luge. We were both outclassed soundly by a bunch of ten year olds who had just finished school, however." loading="lazy" srcset="/images/icfp-34.768.webp 768w, /images/icfp-34.640.webp 640w, /images/icfp-34.480.webp 480w, /images/icfp-34.320.webp 320w, /images/icfp-34.1920.webp 1920w, /images/icfp-34.1600.webp 1600w, /images/icfp-34.1440.webp 1440w, /images/icfp-34.1280.webp 1280w, /images/icfp-34.1024.webp 1024w"><figcaption>As a metaphor about the race we are running to mitigate the worst effects of climate change using computer science, I left Sadiq in the dust at the Skyline Luge. We were both outclassed soundly by a bunch of ten year olds who had just finished school, however.</figcaption></figure>

[^1]: See also in the [ICFP25](https://anil.recoil.org/notes/icfp25) series: [chairing PROPL25](https://anil.recoil.org/notes/icfp25-propl), the [OxCaml tutorial](https://anil.recoil.org/notes/icfp25-oxcaml), [multicore at Jane Street and Docker](https://anil.recoil.org/notes/icfp25-ocaml5-js-docker), [post-POSIX IO](https://anil.recoil.org/notes/icfp25-post-posix) and [what I learnt](https://anil.recoil.org/notes/icfp25-what-i-learnt).
Synopsis: Report on second Programming for the Planet workshop featuring papers on climate modeling, geospatial computation and planetary-scale collaborative systems.
Words: 3154
DOI: 10.59350/hasmq-vj807

## Related

- [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)
- [.plan-26-25: Planetary scale plans, Windows file-descriptor scale problems](https://anil.recoil.org/notes/2026w25) (note, 2026-06-21)
- [.plan-26-15: Banyan trees, (anti)botnets and Bose-Einstein bases](https://anil.recoil.org/notes/2026w15) (note, 2026-04-12)
- [.plan-26-13: Oxidised, standardised, and syndicated](https://anil.recoil.org/notes/2026w13) (note, 2026-03-29)
- [1st TESSERA/CoRE hackathon at the Indian AI Summit](https://anil.recoil.org/notes/first-tessera-hackathon) (note, 2026-02-19)
- [Five ways to use the LIFE metric for conservation decision-making](https://anil.recoil.org/notes/life-uses-paper) (note, 2026-01-12)
- [Four Ps for Building Massive Collective Knowledge Systems](https://anil.recoil.org/notes/principles-for-collective-knowledge) (note, 2025-11-23)
- [GeoTessera 0.7 out with efficient sampling and Zarr support](https://anil.recoil.org/notes/geotessera-python-0-7) (note, 2025-11-17)
- [On the path to the UK/India AI Summit with OpenUK and the ATI](https://anil.recoil.org/notes/path-to-uk-india-ai-summit) (note, 2025-11-11)
- [PROPL poster session at ICFP/SPLASH banquet](https://anil.recoil.org/videos/83e457b1-76d0-4e7e-b65f-be35544750c7) (video, 2025-10-22)
- [A Roundup of ICFP/SPLASH 2025 happenings](https://anil.recoil.org/notes/icfp25) (note, 2025-10-10)
- [What I learnt at ICFP/SPLASH 2025 about OCaml, Hazel and FP](https://anil.recoil.org/notes/icfp25-what-i-learnt) (note, 2025-10-09)
- [It's time to go post-POSIX at ICFP/SPLASH 2025](https://anil.recoil.org/notes/icfp25-post-posix) (note, 2025-10-08)
- [Jane Street and Docker on moving to OCaml 5 at ICFP/SPLASH 2025](https://anil.recoil.org/notes/icfp25-ocaml5-js-docker) (note, 2025-10-07)
- [Holding an OxCaml tutorial at ICFP/SPLASH 2025](https://anil.recoil.org/notes/icfp25-oxcaml) (note, 2025-10-06)
- [Programming for the Planet at ICFP/SPLASH 2025](https://anil.recoil.org/notes/icfp25-propl) (note, 2025-10-05)
- [An Architecture for Spatial Networking](https://anil.recoil.org/papers/2025-bifrost) (paper, 2025-10-01)
- [Airborne assessment uncovers socioeconomic stratification of urban nature in England](https://anil.recoil.org/papers/2025-england-nature) (paper, 2025-10-01)
- [A FAIR Case for a Live Computational Commons](https://anil.recoil.org/papers/2025-fairground) (paper, 2025-10-01)
- [Programming Opportunities for the Global Biodiversity Observation Network](https://anil.recoil.org/papers/2025-programming-gbon) (paper, 2025-10-01)
- [Proceedings of the 2nd ACM SIGPLAN International Workshop on Programming for the Planet](https://anil.recoil.org/papers/2025-propl) (paper, 2025-10-01)
- [Yirgacheffe: A Declarative Approach to Geospatial Data](https://anil.recoil.org/papers/2025-yirgacheffe) (paper, 2025-10-01)
- [GeoTessera Python library released for geospatial embeddings](https://anil.recoil.org/notes/geotessera-python) (note, 2025-08-31)
- [What I learnt at the National Academy of Sciences US-UK Forum on Biodiversity](https://anil.recoil.org/notes/nas-rs-biodiversity) (note, 2025-06-06)
- [2nd Programming for the Planet workshop CFP out](https://anil.recoil.org/notes/propl-at-splash) (note, 2025-04-03)
- [OxCaml Labs](https://anil.recoil.org/projects/oxcaml) (project, 2025-01-01)
- [LIFE: A metric for mapping the impact of land-cover change on global extinctions](https://anil.recoil.org/papers/2024-life) (paper, 2025-01-01)
- [Uncertainty at scale: how CS hinders climate research](https://anil.recoil.org/papers/2024-uncertainty-cs) (paper, 2024-02-01)
- [Building bigraphs of the real world](https://anil.recoil.org/ideas/bigraphs-real-world) (idea, 2024-01-01)
- [Mapping LIFE on Earth](https://anil.recoil.org/projects/life) (project, 2023-01-01)
- [Remote Sensing of Nature](https://anil.recoil.org/projects/rsn) (project, 2023-01-01)
- [The role of urban vegetation in human health](https://anil.recoil.org/ideas/urban-vegetation) (idea, 2023-01-01)
- [Planetary Computing](https://anil.recoil.org/projects/plancomp) (project, 2022-01-01)
- [CIEL: A universal execution engine for distributed data-flow computing](https://anil.recoil.org/papers/2011-nsdi-ciel) (paper, 2011-03-01)

---
Canonical: https://anil.recoil.org/notes/icfp25-propl
Type: note
License: CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>
Tags: spatial, functional, programming, ocaml, oxcaml, icfp
