+524
-524
eeg.xml
+524
-524
eeg.xml
···-<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Atomic EEG</title><link href="https://example.com/" rel="alternate"></link><link href="https://example.com/eeg.xml" rel="self"></link><id>https://example.com/</id><updated>2025-04-08T01:00:00Z</updated><author><name>Feed Aggregator</name></author><subtitle>Aggregated Atom feeds</subtitle><entry><title>Coping and Capping</title><link href="https://mort.io/blog/coping-and-capping/" rel="alternate"></link><published>2025-04-08T01:00:00Z</published><updated>2025-04-08T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/coping-and-capping/</id><summary type="html"><p>Well that was fun! Quite high up there in the set of things that I never even<a href="https://en.wikipedia.org/wiki/Simon_McDonald%2C_Baron_McDonald_of_Salford">Simon</a>,···-<p>I hope everyone had a good time anyway!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Weeknotes: 7th April 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-04-07/" rel="alternate"></link><published>2025-04-07T10:07:12Z</published><updated>2025-04-07T10:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-04-07/</id><summary type="html"><h1>Last Week</h1><p>We welcomed <a href="https://www.tunbury.org/">Mark</a>, <a href="https://www.dra27.uk/blog/">David</a>, and <a href="https://www.cst.cam.ac.uk/people/jjl25">Jon</a> to the group recently, and I finally found time to sit down and havesome great discussions with them all on what we've been working on this last year, and how we might all collaborate on things around that. In what was an otherwise frustrating week on the technical work front, it was great to have some inspiring discussions on what we might work on over the coming year.</p>···<li>Look forward to discussions with group visitor <a href="https://homepages.inf.ed.ac.uk/omacaod/">Oisin Mac Aodha</a> at the end of the week around map modelling.</li>-</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Box API with OCaml and Claude</title><link href="https://www.tunbury.org/ocaml-claude-box/" rel="alternate"></link><published>2025-04-07T01:00:00Z</published><updated>2025-04-07T01:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/ocaml-claude-box</id><summary type="html"><p>Over the weekend, I decided to extend my <a href="https://box.com">Box</a> <a href="https://github.com/mtelvers/ocaml-box-diff">tool</a> to incorporate file upload. There is a straightforward POST API for this with a <code class="language-plaintext highlighter-rouge">curl</code> one-liner given in the Box <a href="https://developer.box.com/reference/post-files-content/">documentation</a>. Easy.</p><p>The documentation for <a href="https://mirage.github.io/ocaml-cohttp/cohttp-eio/Cohttp_eio/Client/index.html">Cohttp-eio.Client</a> only gives the function signature for <code class="language-plaintext highlighter-rouge">post</code>, but it looked pretty similar to <code class="language-plaintext highlighter-rouge">get</code>, which I had already been working with. The <a href="https://github.com/mirage/ocaml-cohttp">README</a> for Cohttp gave me pause when I read this comment about multipart forms.</p>···<p>As a relatively new adopter of OCaml as my language of choice, the most significant challenge I face is documentation, particularly when I find a library on opam which I want to use. I find this an interesting contrast to the others in the community, where it is often cited that tooling is the most significant barrier to adoption. In my opinion, the time taken to set up a build environment is dwarfed by the time spent in that environment iterating code.</p>-<p>I would like to take this opportunity to thank all contributors to opam repository for their time and effort in making packages available. This post mentions specific packages but only to illustrate my point.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>2025-04-06 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/04/06/weekly-notes.html" rel="alternate"></link><published>2025-04-06T01:00:00Z</published><updated>2025-04-06T01:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/04/06/weekly-notes</id><summary type="html"><p>As mentioned in my previous post, I have been working on the Gini Coefficient. However, when trying to run the code at a different geographical scale, it crashed, so I decided to reformat the code into a module following software engineering practices, which has been my sole focus the past week. I realised I had written the same function in multiple scripts, making the code redundant. This resulted in the reduction of the number of files and depedencies now are more clear. I switched the python project from an entirely geopandas-based workflow to a an Apache Sedona-based one, which gives me more flexibility and efficiency. I added a couple of new features that enable the location of trees around multiple buffer for each building in England and I also calculated the euclidean distance between any building and their closest park. In addition to this, I found a workoaround to use spark in R to be able to plot my results using ggplot2, which I prefer over matplotlib, given that it uses the grammar of graphics. Not to mention the GIni Coefficient functions and many other econometric functions are easily available in R. With spark, in R I can do the analysis on the parquet files I created the previous week (I stopped using duckdb, since its analytical operations don’t match sparklyr).</p><p>This week my work will be focused on integrating the modules into one table, aggregating by the geographic level, which means calculating the Gini Coefficient at the same geographic level of the canopy cover and the spectral indexes (NDVI, NDBI, NDWI). Moreover, I will continue working with the document as some other groups and organisations are working similar goals. Just this past Saturday, <a href="https://www.forestresearch.gov.uk/tools-and-resources/fthr/trees-outside-woodland-map/">Forest Research</a> introduced a new map for trees outside woodland, which uses a similar approach to <a href="https://ancazugo.github.io/research/outreach/2025/03/23/weekly-notes.html">mine</a>, but my objective is beyond mapping as I want to evaluate green equity. The image is comparison of my map and theirs.</p>-<p>On my side project with the Estates division, I managed to automate the AutoCAD workflow to reformat floor plan files for further use in the ArcGIS ecosystem to build a floor-aware geodatabase. This will save me (and the Estates team) a ton of time when preprocessing DWG files. Following what I’ve been doing for my own code, I’ve also implemented good software enginneering practices for this project, which will hopefully become a package for internal use in the University. I’ve been using uv as a package manager for this project and it’s ridiculously fast compared to poetry and the docstring is so easily written by VS Code and Copilot. The next step is to implement the Building class for the geodatabase and create the visualization for occupancy.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Semi distributed filesystems with ZFS and Sanoid</title><link href="https://anil.recoil.org/notes/syncoid-sanoid-zfs" rel="alternate"></link><published>2025-04-05T01:00:00Z</published><updated>2025-04-05T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/syncoid-sanoid-zfs</id><summary type="html"><p>Over in my <a href="https://www.cst.cam.ac.uk/research/eeg">EEG</a> group, we have a <em>lot</em> of primary and secondary datasets lying around: 100s of terabytes of <a href="https://anil.recoil.org/projects/rsn">satellite imagery</a>, <a href="https://anil.recoil.org/projects/life">biodiversity data</a>, <a href="https://anil.recoil.org/projects/ce">academic literature</a>, and the intermediate computations that go along with them. Our trusty central shared storage server running <a href="https://www.truenas.com">TrueNAS</a> stores data in <a href="https://en.wikipedia.org/wiki/ZFS">ZFS</a> and serves it over <a href="https://en.wikipedia.org/wiki/Network_File_System">NFSv4</a> to a bunch of hosts. This is rapidly becoming a bottleneck as our group and datasets grow, and <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> has been steadily adding <a href="https://www.tunbury.org/kingston-drives/">lots more raw capacity</a>. The question now is how to configure this raw SSD capacity into a more nimble storage setup. If anyone's seen any systems similar to the one sketched out below, I'd love to hear from you.</p><p>The first design constraint is to get rid of centralised network storage. This is both slow when compared to a modern NVMEs, and also hard to extend beyond the <a href="https://anil.recoil.org/papers/2015-sosp-sibylfs">POSIX-ish</a> API to take advantage of filesystem-specific features like snapshots or <a href="https://docs.rs/reflink/latest/reflink/">reflink clones</a>. We also don't take much advantage of the simultaneous use of the network storage. Instead, we'd like to just make every host materialise the portion of storage it needs locally by cloning it from the remote server.</p><p>The alternative I'm considering here is to use ZFS filesystems on the nodes themselves rather than NFS. This has the upside of having the cloned data be directly available on the local disk of the host that's using it, meaning that there's no performance impact as with networked storage. ZFS also scales fairly enormous sizes, and so it seems likely that we won't run into an upper bound due to this choice of filesystem in the medium term.</p>···<li><strong>Switching from ZFS to XFS locally:</strong> While ZFS seems like the ideal replication filesystem, it still lacks some of the cooler local features like <a href="https://github.com/openzfs/zfs/issues/405#issuecomment-1880208374">XFS reflinks</a>. It would be nice to find an efficient way to materialise an XFS filesystem from a ZFS base, but without copying absolutely everything. This is either impossibly difficult or really easy via some cunning use of <a href="https://en.wikipedia.org/wiki/OverlayFS">overlayfs</a>. Probably impossible though, given how much block-level information is needed to do deduplication.</li><li><strong>ZFS labels for policy:</strong> Most ZFS tools use custom key/value labels on datasets to implement policies. For example, a <code>syncoid:sync</code> label can be used to tell syncoid to include a particular recursive dataset in its replication. There are some scalability limits in just how many labels you can add before slowing a machine down a crawl (though not as bad as how many live mounts). <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> started some WIP <a href="https://github.com/quantifyearth/ocaml-zfs">ocaml-zfs</a> bindings to <a href="https://github.com/openzfs/zfs/blob/master/include/libzfs.h">libzfs</a> to help explore this question.</li>-<p>So lots of work left to do here, but quite good fun as systems hacking goes! When <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> is <a href="https://www.tunbury.org/kingston-drives/">done installing</a> our new drives, we'll have a few petabytes of raw capacity to implement this system over...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Rewarding influence</title><link href="https://mort.io/blog/happy-day/" rel="alternate"></link><published>2025-04-05T01:00:00Z</published><updated>2025-04-05T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/happy-day/</id><summary type="html"><p><a href="https://2025.eurosys.org/index.html">EuroSys 2025</a> was co-located with <a href="https://www.asplos-conference.org/asplos2025/">ASPLOSprimarily because <a href="https://mort.io/blog/tdis-accepted">two students had papers in the TDIS···-ignorance… :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>opam repo ci job timeouts</title><link href="https://www.tunbury.org/opam-repo-ci/" rel="alternate"></link><published>2025-04-04T01:00:00Z</published><updated>2025-04-04T01:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/opam-repo-ci</id><summary type="html"><p>It’s Tuesday morning, and virtually all opam repo ci jobs are failing with timeouts. This comes at a critical time as these are the first jobs following the update of <a href="https://github.com/ocurrent/ocaml-version">ocurrent/ocaml-version</a> <a href="https://www.tunbury.org/recent-ocaml-version/">noted</a> on 24th March.</p><p>The <a href="https://opam.ci.ocaml.org/github/ocaml/opam-repository">opam repo ci</a> tests all PRs on <a href="https://github.com/ocaml/opam-repository">opam-repository</a>. The pipeline downloads Docker images, which contain the root filesystem for various Linux distributions, architectures, and OCaml versions, which are used as the base environment to run the tests. These base images are created by the <a href="https://images.ci.ocaml.org">base image builder</a>. <a href="https://github.com/ocurrent/docker-base-images/pull/317">PR#317</a> update these base images in three ways:</p>···<p>Musing on this issue with David, the idea of using the latest tag rather than head commit seemed like a good compromise. This allowed us to specifically test pre-release versions of opam when they were tagged but not be at the cutting edge with the risk of impacting a key service.</p>-<p>We need the latest tag by version number, not by date, as we wouldn’t want to revert to testing on, for example, 2.1.7 if something caused a new release of the 2.1 series. The result was a function which runs <code class="language-plaintext highlighter-rouge">git tag --format %(objectname) %(refname:strip=2)</code> and semantically sorts the version numbers using <code class="language-plaintext highlighter-rouge">OpamVersion.compare</code>. See <a href="https://github.com/ocurrent/docker-base-images/pull/318">PR#318</a>.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>2nd Programming for the Planet workshop CFP out</title><link href="https://anil.recoil.org/notes/propl-at-splash" rel="alternate"></link><published>2025-04-03T01:00:00Z</published><updated>2025-04-03T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/propl-at-splash</id><summary type="html"><p><a class="contact" href="https://dorchard.github.io">Dominic Orchard</a> and I had a blast <a href="https://plas4sci.github.io/conference/2024/01/22/propl.html">running</a> the first <a href="https://propl.dev">PROPL</a> workshop a couple of years ago, with a full room and engaged audience in POPL in London. Last year, our sister conference <a href="https://sicsa.ac.uk/loco/loco2024/">LOCO</a> took over, and it's our turn again this year! PROPL will return for a <a href="https://conf.researchr.org/home/icfp-splash-2025/propl-2025">second outing</a> in October, co-located with <a href="https://icfp25.sigplan.org/">ICFP</a>/SPLASH in Singapore in October. Read the <a href="https://conf.researchr.org/home/icfp-splash-2025/propl-2025#Call-for-Papers">call for papers</a> here (deadline 3rd July 2025).</p><p><figure class="image-right"><img alt="Dominic prepping for the first PROPL in the rather delightful venue" class="content-image" src="https://anil.recoil.org/images/propl-1.webp" title="Dominic prepping for the first PROPL in the rather delightful venue" /><figcaption>Dominic prepping for the first PROPL in the rather delightful venue</figcaption></figure><p>We'd love to get wider participation in computer science interacting with matters of climate and biodiversity:</p>···<p>For those curious about the first PROPL outing, all of the talk videos are all online <a href="https://www.youtube.com/watch?v=yZeS4oN_XeI&amp;list=PLyrlk8Xaylp7j9K6CETKpQSpCIOcJ9iO9">on YouTube</a> or our <a href="https://watch.eeg.cl.cam.ac.uk/c/propl24/videos">EEG video mirror</a> (ad-free).</p><p><figure class="image-center"><img alt="We&#x27;re looking forward to seeing you in Singapore for the second outing!" class="content-image" src="https://anil.recoil.org/images/propl-3.webp" title="We&#x27;re looking forward to seeing you in Singapore for the second outing!" /><figcaption>We&#x27;re looking forward to seeing you in Singapore for the second outing!</figcaption></figure>-<p><small class="credits">(Thanks to Lena Yang for spotting typos.)</small></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Everything is a file; except when it’s not</title><link href="https://www.dra27.uk/blog/platform/2025/04/03/cloexec.html" rel="alternate"></link><published>2025-04-03T01:00:00Z</published><updated>2025-04-03T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2025/04/03/cloexec</id><summary type="html"><p>Some titles make more sense than others. One of my oldest contributions to OCamlwas a complete overhaul of <a href="https://ocaml.org/p/ocaml-base-compiler/5.2.1/doc/Unix/index.html#file-status"><code class="language-plaintext highlighter-rouge">Unix.stat</code> et al</a>in <a href="https://github.com/ocaml/ocaml/pull/462">ocaml/ocaml#462</a> which formed partof OCaml 4.03. As part of the work on <a href="https://ocaml.org/p/msvs-detect/latest"><code class="language-plaintext highlighter-rouge">msvs-detect</code></a>···-clearly still going on. But that’s for next time…</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>More Kingston Drives</title><link href="https://www.tunbury.org/kingston-drives/" rel="alternate"></link><published>2025-04-03T01:00:00Z</published><updated>2025-04-03T01:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/kingston-drives</id><summary type="html"><p>We have received the second batch of 40 x 7.68TB Kingston SSD drives, bringing the total to 50 drives.</p><p>We now have 5 fully populated Dell PowerEdge R640 with a total raw capacity of 384TB.</p>-<p><img alt="" src="https://www.tunbury.org/images/kingston-forty-with-caddies.png" /></p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Ubuntu with ZFS root</title><link href="https://www.tunbury.org/ubuntu-with-zfs-root/" rel="alternate"></link><published>2025-04-02T01:00:00Z</published><updated>2025-04-02T01:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/ubuntu-with-zfs-root</id><summary type="html"><p>The installation of <a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2022.04%20Root%20on%20ZFS.html">Ubuntu on ZFS</a>contains about 50 steps of detailed configuration. I have 10 servers to install, so I would like to script this process as much as possible.</p>···<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ansible-playbook <span class="nt">-i</span> hosts <span class="nt">--limit</span> your.fqdn ubuntu-zfs.yml-<p>The playbook is available as a GitHub gist <a href="https://gist.github.com/mtelvers/2cbeb5e35f43f5e461aa0c14c4a0a6b8">zfs-ubuntu.yml</a>.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Updating Docker and Go</title><link href="https://www.tunbury.org/go-docker/" rel="alternate"></link><published>2025-04-01T01:00:00Z</published><updated>2025-04-01T01:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/go-docker</id><summary type="html"><p>For some time, we have had issues on Ubuntu Noble when extracting<a href="https://github.com/ocaml/infrastructure/issues/121">ocaml/infrastructure#121</a>.···-<a href="https://gist.github.com/mtelvers/ced9d981b9137c491c95780390ce802c">golang+docker.yml</a></p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Weeknotes: 31th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-31/" rel="alternate"></link><published>2025-03-31T10:07:12Z</published><updated>2025-03-31T10:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-31/</id><summary type="html"><h1>Last Week</h1><p>I was still coming off the back of being unwell the previous week, so not the most productive week</p><p>I got the full <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR calculation</a> running, which means I now have two full biodiversity impact pipelines running built on the same AoH code underpinnings. I checked in with Chess, and it looks like I'm mostly there, but I just want to check some of the details, as it looks like I'm losing some costal pixels compared to her results, which makes me suspect my clipping for the marine layer might be out.</p>···<li>Process the custom LIFE run - we have a meeting on this the following week, and I need maps for Ali in advance of that</li><li>Look at my STAR code and work out if I need to fix things before I ask Chess to review my results again</li>-</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Shelter, Hazel and More!</title><link href="https://patrick.sirref.org/weekly-2025-03-31/" rel="alternate"></link><published>2025-03-31T01:00:00Z</published><updated>2025-03-31T01:00:00Z</updated><author><name>https://patrick.sirref.org/Patrick%20Ferris/</name></author><id>https://patrick.sirref.org/weekly-2025-03-31/</id><summary type="html"><p>Last week I focused on <a href="https://patrick.sirref.org/shelter/">Shelter</a> -- our idea that shells should have the same ability as reproducible build tools like Nix or Docker. To this end I now have a fairly fleshed out prototype. </p>···<p>I recently wrote about the painful experience of <a href="https://patrick.sirref.org/ppxlib-5-2/">miragrating ppxlib to the 5.2 OCaml AST</a>. This week, Nathan Rebours and I merged a PR to add the <a href="https://github.com/ocaml-ppx/ppxlib/pull/558">5.3 AST</a>! Ppxlib has been playing catch-up with the compiler and we decided it was best to try to catch up quickly and deal with the ecosystem fallout all at once rather than incrementally. With this new AST merged, ppx authors can now use the new <code>Pexp_effect</code> parsetree node. I'll write a little more about this in a separate post soon. </p>-</section></summary><category term="Weeklies"></category></entry><entry><title>Installation order for opam packages</title><link href="https://www.tunbury.org/opam-post-deps/" rel="alternate"></link><published>2025-03-31T01:00:00Z</published><updated>2025-03-31T01:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/opam-post-deps</id><summary type="html"><p>Previously, I discussed the installation order for a simple directed acyclic graph without any cycles. However, <code class="language-plaintext highlighter-rouge">opam</code> packages include <em>post</em> dependencies. Rather than package A depending upon B where B would be installed first, <em>post</em> dependencies require X to be installed after Y. The <em>post</em> dependencies only occur in a small number of core OCaml packages. They are quite often empty and exist to direct the solver. Up until now, I had been using a base layer with an opam switch containing the base compiler and, therefore, did not need to deal with any <em>post</em> dependencies.</p><p>Here is the graph of <a href="https://www.tunbury.org/images/0install.2.18-with-post-with-colour.pdf">0install</a> with <em>post</em> dependencies coloured in red.</p>···<p>In my testing, the installation order matches the order used by opam within the variation allowed above.</p>-<p>Layers can be built up using the intersection of packages installed so far and the required dependencies.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>2025-03-30 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/30/weekly-notes.html" rel="alternate"></link><published>2025-03-30T00:00:00Z</published><updated>2025-03-30T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/03/30/weekly-notes</id><summary type="html"><p>The past week or so I’ve been working on cleaning the code in my 3-30-300 analysis repo. Most of the code was running fine but many functions were repeated in the modules, and it wasn’t really structured as a package. This was partially motivated by a workshop about good coding practices by the photonics group in the department of electrical engineering. Having a clean repo makes all the difference when running your experiments.</p><p>In my meeting with <a href="https://anil.recoil.org/">Anil</a> we discussed on the best ways to measure the Gini coefficient for green space accessibility and availability and how they relate to equity. Although, widely used in econometrics, it presents some problems when it comes to scale. For this reason, I am calculating the 3-30-300 metrics and the remote sensing-derived metrics at the different statistical geographies in the UK (OA, LSOA, MSOA, LAD, RGN), because I feel that, especially for the 3 and 300 components, the gini coefficient is a better measure of the zonal behaviour than just averaging the count for all the buildings. So what I am testing is: for any given geography at any level (a block in Cambridge), estimate the 3 (number of trees around a radius) and 300 (distance to park) for all the buildings inside the area and calculate the gini coefficient, normalised by population. I have to say that this was the other reason why I decided to restructure the code because I tried to run it at the other scales and it broke. Hence, why I swithced all my input data to parquet format that I can come back to using R or Python (I prefer R for graphics 😂). I’ve been messing around with duckdb (kudos to <a href="https://digitalflapjack.com/">Michael</a>) and clickhouse (as suggested once by Anil) and they work great; the only problem is in their spatial support, where Apache Sedona and Spark have the edge at the moment.</p>-<p>Finally, I got to help <a href="https://charlesemogor.com/">Charles Emogor</a> one last time (in-person at least) before his trip to Harvard for his postdoc. It was mostly related in setting up his coding workspace in VS Code and Positron (R version of VS Code), as well as updating his webpage and some geospatial operations.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Not one but two accepted papers and a Ph.D.</title><link href="https://mort.io/blog/tdis-accepted/" rel="alternate"></link><published>2025-03-30T00:00:00Z</published><updated>2025-03-30T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/tdis-accepted/</id><summary type="html"><p>As I find myself once more on a train to parts unknown (to me at least), a brief···<div class="footnote-definition" id="1"><sup class="footnote-definition-label">1</sup>-</div></summary><category term="mort’s mythopœia"></category></entry><entry><title>Box Diff Tool</title><link href="https://www.tunbury.org/box-diff/" rel="alternate"></link><published>2025-03-30T00:00:00Z</published><updated>2025-03-30T00:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/box-diff</id><summary type="html"><p>Box has an unlimited storage model but has an upload limit of 1TB per month. I have been uploading various data silos but would now like to verify that the data is all present. Box has an extensive <a href="https://developer.box.com/reference/">API</a>, but I only need the <a href="https://developer.box.com/reference/get-folders-id-items/">list items in folder</a> call.</p><p>The list-items call assumes that you have a folder ID which you would like to query. The root of the tree is always ID 0. To check for the presence of file <code class="language-plaintext highlighter-rouge">foo</code> in a folder tree <code class="language-plaintext highlighter-rouge">a/b/c/foo</code>, we need to call the API with folder ID 0. This returns a list of entries in that folder. e.g.</p>···<p>To deal with folders of any size, we should use the marker system. For this, we pass <code class="language-plaintext highlighter-rouge">?usemarker=true</code> to the first GET request, which causes the API to return <code class="language-plaintext highlighter-rouge">next_marker</code> and <code class="language-plaintext highlighter-rouge">prev_marker</code> as required as additional JSON properties. Subsequent calls would use <code class="language-plaintext highlighter-rouge">?usemarker=true&amp;marker=XXX</code>. The end is detected by the absence of the <code class="language-plaintext highlighter-rouge">next_marker</code> when no more entries are available.</p>-<p>The project can be found on GitHub in <a href="https://github.com/mtelvers/ocaml-box-diff">mtelvers/ocaml-box-diff</a>.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>New preprint on benchmarking ultra-low power neural accelerators</title><link href="https://anil.recoil.org/news/2025-npu-bench-1" rel="alternate"></link><published>2025-03-28T00:00:00Z</published><updated>2025-03-28T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2025-npu-bench-1</id><summary type="html"><p><a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> just released our latest preprint on how to make sense of the growing number of dedicated, ultra-low-power 'neural network accelerators' that are found in many modern embedded chipsets. My interest in this derives from wanting to decouple from the cloud when it comes to <a href="https://anil.recoil.org/projects/osmose">low-latency local environments</a>, and this needs fast tensor operations in hardware. Josh found a huge number of interesting NPUs in modern low-cost chips, ranging from <a href="https://www.espressif.com/en/products/socs/esp32">ESP32</a>-based boards over to <a href="https://arm.com">ARM</a> ones. All of these have quite a variety of tradeoffs, from the operations supported (which affects which models can be run on them) to the amount of memory and CPU power.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2025-npu-bench.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Core Dev Meeting</title><link href="https://www.dra27.uk/blog/platform/2025/03/28/ocaml-dev-meeting.html" rel="alternate"></link><published>2025-03-28T00:00:00Z</published><updated>2025-03-28T00:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2025/03/28/ocaml-dev-meeting</id><summary type="html"><p>OCaml Core Dev meeting at <a href="https://inria.fr">Inria</a> yesterday. These are···-towards actually opening the pull requests for Relocatable OCaml…</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Dell PowerEdge R640 Storage Server</title><link href="https://www.tunbury.org/dell-poweredge-r640/" rel="alternate"></link><published>2025-03-27T00:00:00Z</published><updated>2025-03-27T00:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/dell-poweredge-r640</id><summary type="html"><p>We have received our first batch of 7.68TB Kingston SSD drives for deployment in some Dell PowerEdge R640 servers, which will be used to create a large storage pool.</p>···-<p>We will run these with a ZFS file system, so need to decide on whether we want to use the hardware RAID features or follow the advice on Wikipedia on the <a href="https://en.wikipedia.org/wiki/ZFS#Avoidance_of_hardware_RAID_controllers">Avoidance of hardware RAID controllers</a>. Online opinion is divided. My summary is that hardware RAID will be easier to manage when a disk fails, but ZFS on the raw disks will have some integrity advantages.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>How This Site Is Build</title><link href="https://ryan.freumh.org/how-this-site-is-built.html" rel="alternate"></link><published>2025-03-26T00:00:00Z</published><updated>2025-03-26T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/how-this-site-is-built.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>FreeBSD 14.2 Upgrade</title><link href="https://www.tunbury.org/freebsd-14.2/" rel="alternate"></link><published>2025-03-26T00:00:00Z</published><updated>2025-03-26T00:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/freebsd-14.2</id><summary type="html"><p>CI workers <code class="language-plaintext highlighter-rouge">spring</code> and <code class="language-plaintext highlighter-rouge">summer</code> run FreeBSD and need to be updated.</p><p>Check the current version of FreeBSD which we have with <code class="language-plaintext highlighter-rouge">uname -r</code>.</p>···<p>To update the the FreeBSD base images used by the CI services, I applied <a href="https://github.com/ocurrent/freebsd-infra/pull/13">PR#13</a> to <a href="https://github.com/ocurrent/freebsd-infra">ocurrent/freebsd-infra</a>.</p>-<p>This was followed up by <a href="https://github.com/ocurrent/ocaml-ci/pull/1007">PR#1007</a> on ocurrent/ocaml-ci and <a href="https://github.com/ocurrent/opam-repo-ci/pull/427">PR#427</a> to ocurrent/opam-repo-ci.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Towards Forester 5.0 II: a design for canonical URLs</title><link href="https://www.forester-notes.org/JVIT/" rel="alternate"></link><published>2025-03-25T13:44:56Z</published><updated>2025-03-25T13:44:56Z</updated><author><name>Jon Sterling</name></author><id>https://www.forester-notes.org/JVIT/</id><summary type="html"><p>One of the goals of <a href="https://www.forester-notes.org/jms-011P/">Forester 5.0</a> is <em>lightweight federation</em>—the ability to have two forests participate in the same graph and therefore provide backlinks, etc. In a previous post (<a href="https://www.forester-notes.org/OYOJ/">Towards <a href="https://www.forester-notes.org/jms-011P/">Forester 5.0</a>: a design for global identity</a>), I talked about some of the difficulties that arise when dealing with identities of people and references that have global scope but could nonetheless be described by trees in many forests. I proposed that such things should be addressed by canonical URIs (e.g. DIDs, DOIs, etc.) and that Forester should grow the ability to bind a canonical URI to multiple trees, which are then gathered into a disambiguation page.</p><p>Today I want to broaden the discussion to cover the difficulties of addressing trees themselves (as opposed to the global entities they may describe). This is a proposal and I welcome feedback.</p>···<p>Forester does not currently support any kind of access control, but this is indeed an important area that we are considering carefully in order to enable institutional use of Forester, and ease the burden of collaboration in the usual case of a forest that contains a mixture of data with varying levels of confidentiality. I believe that the current design is compatible with essentially any approach to access control that we might adopt, but I am interested in feedback to the contrary.</p>-</section></summary><category term="Forester Blog"></category></entry><entry><title>Topological Sort of Packages</title><link href="https://www.tunbury.org/topological-sort/" rel="alternate"></link><published>2025-03-25T00:00:00Z</published><updated>2025-03-25T00:00:00Z</updated><author><name>Mark Elvers (mark.elvers@tunbury.org)</name></author><id>https://www.tunbury.org/topological-sort</id><summary type="html"><p>Given a list of packages and their dependencies, what order should those packages be installed in?</p><p>The above graph gives a simple example of the dependencies of the package <code class="language-plaintext highlighter-rouge">dune</code> nicely ordered right to left.</p>···<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># topological_sort dune;;-</code></pre></div></div></summary><category term="Tunbury.ORG"></category></entry><entry><title>Weeknotes: 24th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-24/" rel="alternate"></link><published>2025-03-24T09:07:12Z</published><updated>2025-03-24T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-24/</id><summary type="html"><h1>Last week</h1><p>I spent most of the week with a head-cold or such (I'm not the right kind of doctor to figure that out), and so productivity was a little low.</p><p>Two major steps forward on my implementation of the IUCN's <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR metric</a> this week.</p>···<li>Although it's for a video game, the article could just as easily apply to those trying to visualise geospatial datasets. Yes, the specific tooling around the source data will be different, but the questions Nick has to ask along the way will be the same.</li><li>The introduced me to the term &quot;polydisciplinary&quot;, which I think is a nice description for a lot of what I do - both currently and just looking back generally over my career. It's rare that I get to be the person with the deep detail knowledge of a thing,, but rather my skill seems to be picking up enough from the fields I'm trying to tie together (aided of course by those who do know more than me) and getting some combined result the individual experts alone wouldn't been able to produce.</li>-</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 24 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-24.html" rel="alternate"></link><published>2025-03-24T00:00:00Z</published><updated>2025-03-24T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-03-24.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>2025-03-23 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/23/weekly-notes.html" rel="alternate"></link><published>2025-03-23T00:00:00Z</published><updated>2025-03-23T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/03/23/weekly-notes</id><summary type="html"><p>After the issues and errors with generating the tree data for all of England, I realised that one of the best ways to proof-check the data was to visualize it and more importantly, to let others see it so they can check things that I might be missing. Because of this, I spent a good chunck of time trying to create a web map of all the trees in London. I used CARTO to do it but it wasn’t straightforward, mostly because of the size of the data. My files were stored in parquet format which apparently CARTO nor Mapbox are capable of transforming automatically to web Mercator, so I had to change the CRS in Sedona and re-generate the parquet partitions. Unfortunately, knowing where each partition is pointed at is not very easy, so what I did was geo-reference using the UK National Grid and then generate the partitions. The result is the map below where all the trees are shown with radius meaning the crown area and the colour the height. I want to improve it because at the moment the layers represent the partitions of the parquet files, but I know you can store the files in BigQuery or S3 and then use CARTO to visualize them (anyone willing to help, I’ll buy a beer and if the weather is good, an ice cream). Nonetheless, I will try that after the paper is done. Speaking of, I realised that I didn’t want to just present correlations between the tree data, remote sensing metrics and deprivation. That seems only descriptive statistics, but following the advice of <a href="https://anil.recoil.org/">Anil</a> from previous meetings, I’ve also worked on a metric that combines all of the variables into one. My original idea was to represent environmental deprivation, as the IMD does, but my variables don’t measure that intrinsecally, they just present where more nature is “available”, so I guess it will be more of a nature availability index. It relies on green and blue infrastructure and it is built on the weights from the first two components of a PCA for the entire country. The cool thing is that it can actually tell which geographic areas are urban or rural and you can see the deprivation pattern in the data. However, the logic behind them is just additive, as in it’s just following the form $y = a_1x_1 + … + a_ix_i$, where each $x$ is the “nature metric” for a given geographical area, and each coefficient $a$ is associated with said metric. This would be a-dimensional as variables were normalised. Then, after this I would build a Gini Coefficient of green disparity per Local Authority (this could be done at greater geographic scales such as region). This is based on this <a href="https://www.sciencedirect.com/science/article/pii/S0169204624002305#s0025">paper</a>, but also comments made by <a href="https://www.sustainabledesign.arct.cam.ac.uk/">Ronita</a> on how to represent my metrics, as the Gini Coefficient is widely used in economics when talking about wealth inequality.</p>-<p>Finally, on a lighter note, Saturday morning after a good tennis session, I went to the Computer Lab to attend a workshop on <a href="https://sonic-pi.net/">Sonic Pi by its creator Sam Aaron</a>, as part of the Cambridge Festival. It turned out, the attendants were just as old as the first movie in the Star Wars Sequel Trilogy (The Force Awakens in 2015). 😅 However, I ended up enjoying other activities during the festival, namely the Insomia AI project and the earphones that uses AI to monitor your heart rate. More importantly, expect my appearance in the CST social media channels as I answer questions on super computers, asked by none other than my dear friend and fellow PhD student <a href="https://www.onkargulati.com/">Onkar Gulati</a>.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>LIFE becomes an Official Statistic of the UK government</title><link href="https://anil.recoil.org/notes/life-official-statistic" rel="alternate"></link><published>2025-03-21T00:00:00Z</published><updated>2025-03-21T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/life-official-statistic</id><summary type="html"><p>Our <a href="https://anil.recoil.org/papers/2024-life">recently published</a> <a href="https://anil.recoil.org/projects/life">LIFE</a> biodiversity metric has just been integrated into a newly recognised <a href="https://defraenvironment.blog.gov.uk/2025/01/20/newly-recognised-official-statistic-tracks-the-environmental-impact-of-our-consumption/">Official Statistic from the UK government</a>! This integrates the core LIFE biodiversity metric with <a href="https://anil.recoil.org/papers/2024-food-life">food provenance data</a> to track the environmental impacts of our consumption habits.</p><p>I must admit that I'd not heard of &quot;Official Statistics&quot; before this, so I did a bit of research. The UK <a href="https://osr.statisticsauthority.gov.uk/">Office for Statistics Regulation</a> says that:</p><p>Official statistics are statistics produced by Crown bodies and other organisations listed within an Official Statistics Order, on behalf of the UK government or devolved administrations.···<p><a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball">Thomas Ball</a> and <a class="contact" href="https://www.york.ac.uk/sei/staff/jonathan-green/">Jonathan Green</a> then worked directly with the policy team at the JNCC to further customise the metric for GEIC needs, and the aggregate result of that is what's actually used in the dashboard.</p><p>There's quite a long gap between the original observations and the resulting policy use, with many humans in the loop in between. Computational systems need to capture all this nuance rather than viewing these metrics as &quot;just&quot; dataflow pipelines. However, it's equally important to capture the policy customisations in some sort of code, so that we can reliably issue annual updates. Figuring this pipeline out is part of what we're working on in the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project at present. See below for a <a href="https://anil.recoil.org/videos/d592bf17-c835-435f-9469-f0f65e926975">recent talk</a> I gave on the functional programming aspects of this problem at LambdaDays.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 17th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-17/" rel="alternate"></link><published>2025-03-17T09:07:12Z</published><updated>2025-03-17T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-17/</id><summary type="html"><h1>Förrförra vecka</h1><p>As the outputs of the LIFE project we generate two maps: one showing the impact on extinction risk of converting land to farmland (aka the arable scenario), and another showing the risk of converting human changed land back to predicted its natural state (aka the restore scenario). Those maps though are data maps, containing fractional values in each pixel, so aren't something you can see, so instead when presenting the work I tend to lead with a &quot;pop-science&quot; version generated by <a href="https://qgis.org">QGIS</a> when you load the maps. Here you can see the map for the arable scenario, showing that putting a farm in a tropical forest is a sub-optimal idea:</p>···<li>I had an idea for some work that might take advantage of what Frank has been working on with foundational models, so I need to get him some data for that so we can do an initial test of that idea.</li><li><a href="https://www.outreachy.org">Outreachy</a> has started, so I'll be helping candidates for that find things to work on as I'm running one of the projects there.</li>-</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 17 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-17.html" rel="alternate"></link><published>2025-03-17T00:00:00Z</published><updated>2025-03-17T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-03-17.html</id><summary type="html"><article>···<h3 id="spatial-name-system"><span class="done DONE">DONE</span> <a href="sns.html">Spatial Name System</a></h3><h3 id="eon"><span class="done DONE">DONE</span> <a href="eon.html">Eon</a></h3>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>2025-03-16 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/16/weekly-notes.html" rel="alternate"></link><published>2025-03-16T00:00:00Z</published><updated>2025-03-16T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/03/16/weekly-notes</id><summary type="html"><p>Most of my week was devoted to debugging my code to count the number of trees per geographical area. As mentioned in previous posts, I’ve been using Apache Sedona to process all my vector files, which has reduced the computation time significantly, particularly for spatial joins around all buildings in England. However, I realised that I hadn’t actually counted how many trees there are in total, which sounds trivial, but it turned out to be not as easy with the code that I had. So it turns out that when you are doing a Spatial Join with an Spatial RDD, you are only expected to pass two columns, the identifier and geometry for each row. This is not present in the docs, but I found it by accident while converting from Spark DataFrames to RDDs. Also, due to the number of trees (in the hundreds of millions range for England. Urban Cambridge apparently has ~66K 😉), I had to increase the memory requirements of the Sedona config but then it didn’t run, so what I ended up doing was iteratating over each Local Authority and querying the trees for that area, while counting the number of trees in each LSOA (Local Authorities are made by many LSOAs). This takes about 2 hours to run but was the best solution I found to overcome the Spark errors. Also, I realised that for ~300 LSOAs, I wasn’t getting any trees but it’s because their raster files, even though read by Rasterio, are corrupted due to inlavid values. It was very tricky to find the solution to this but a simple call to the object’s values can be caught by the <code class="language-plaintext highlighter-rouge">try/except</code> clause so that solved it for now. The good news is that all of these corrections are done and now I (hope to) finally have a clean and complete dataset for analysis which will be my main goal for this week, so I can complete the results and discussion of this paper. And right on time because it´s the end of the term so my focus will be this on for the start of the Easter break. Speaking of, at some point in the next weeks I will write an in-depth blog about working with Sedona after the paper is done, because I feel that a lot of people (academics in particular) would benefit from it since the tool is in its early adoption phase in the industry, while very few academics use it in their workflow.</p><p>On a side note, my supervisions for the academic year finished last week. I was teaching the Maths and Programming course for the new design tripos in the Department of Architecture. It was a very nurturing experience that allowed me to teach in the Cambridge system, which is very unique, but also gave me the chance to re-learn some of the mathematical concepts, notably linear algebra and differential calculus that are behind ML algorithms. I had learned those more than 10 years ago when I was in Uni, and I was surprised of how rusty I was with my math. Related to this, I just started reading <a href="https://www.penguin.co.uk/books/446849/why-machines-learn-by-ananthaswamy-anil/9780241586488">Why Machines Learn</a> by Anil Ananthaswamy, for a more in-depth refresher on Maths. Will come back to this with my comments once I finish it.-Finally, I successfully finished the intermediate 1 French course (sort of B1), which means that I can say <em>Je ne sais pas</em> when I don’t understand why my code behaves in a unexpected way. 🤣</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>A fully AI-generated paper just passed peer review; notes from our evidence synthesis workshop</title><link href="https://anil.recoil.org/notes/ai-for-evidence-synthesis-workshop" rel="alternate"></link><published>2025-03-12T00:00:00Z</published><updated>2025-03-12T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ai-for-evidence-synthesis-workshop</id><summary type="html"><p>Access to reliable and timely scientific evidence is utterly vital for the practise of responsible policymaking, especially with all the turmoil in the world these days. At the same time, the evidence base on which use to make these decisions is rapidly morphing under our feet; the <a href="https://sakana.ai/ai-scientist-first-publication/">first entirely AI-generated paper passed peer review</a> at an ICLR workshop today. We held a workshop on this topic of AI and evidence synthesis at <a href="https://pem.cam.ac.uk">Pembroke College</a> last week, to understand both the opportunities for the use of AI here, the <a href="https://anil.recoil.org/papers/2024-ce-llm">strengths and limitations</a> of current tools, areas of progress and also just to chat with policymakers from <a href="https://www.gov.uk/government/organisations/department-for-science-innovation-and-technology">DSIT</a> and thinktanks about how to approach this rapidly moving area.</p><p><em>(The following notes are adapted from jottings from <a class="contact" href="https://www.cst.cam.ac.uk/people/jkm40">Jessica Montgomery</a>,<a class="contact" href="https://samreynolds.org/">Sam Reynolds</a>, <a class="contact" href="https://ai.cam.ac.uk/people/annabelle-scott">Annabelle Scott</a> and myself. They are not at all complete, but hopefully useful!)</em></p><p>We invited a range of participants to the workshop and held it at Pembroke College (the choice of the centuries-old location felt appropriate).···<p>Thanks <a class="contact" href="https://ai.cam.ac.uk/people/annabelle-scott">Annabelle Scott</a> for such a stellar organisation job and to Pembroke for hosting and all forattending, and please do continue the discussion about this <a href="https://www.linkedin.com/feed/update/urn:li:activity:7303431795587309569/">on LinkedIn</a>-if you are so inclined.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 10th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-10/" rel="alternate"></link><published>2025-03-10T09:07:12Z</published><updated>2025-03-10T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-10/</id><summary type="html"><h1>Last week</h1><p>I've continued to do a little playing around with <a href="https://www.inaturalist.org">iNaturalist</a> data, both the range data and the occurrence data for birds. Birds, aka Aves, is a good one to pick as it's fairly well represented in both IUCN data (which I understand to have all known species of bird in it), and well covered in observations.</p><p>I read up on how the &quot;range&quot; maps that iNaturalist <a href="https://www.inaturalist.org/pages/range_maps">have started to share</a>, which they describe in <a href="https://www.inaturalist.org/posts/84677">this blog post</a>, and link to <a href="https://arxiv.org/abs/2306.02564">this paper</a> on the methods use. This describes how they use a neural network model to generate the data, and how it differs from standard modelling approaches as they only have presence data and not absence data. <a href="https://anil.recoil.org">Anil</a> then pointed me at <a href="https://arxiv.org/abs/2502.14977">a newer paper</a> by the same group that looks specifically at trying to model species with very few occurrence points using machine learning techniques.</p>···<p>A couple of weeks ago we looked at doing a version of LIFE that used more detailed information for specific countries, and I have to do some preliminary looking at data for that to see how it'll work.</p>-</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 10 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-10.html" rel="alternate"></link><published>2025-03-10T00:00:00Z</published><updated>2025-03-10T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-03-10.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>2025-03-09 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/09/weekly-notes.html" rel="alternate"></link><published>2025-03-09T00:00:00Z</published><updated>2025-03-09T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/03/09/weekly-notes</id><summary type="html"><p>Hello! This week I worked on the optimisation of counting trees within a given geometry. This is a problem I had solved back in December, although not in the optimal way. Ihad segmented almost 400M trees from the Defra dataset, but now I had to count how many are within a 100 m radius of each one of the 29M buildings in England. I had solved this by iterating through the LSOAs (statistical geography) in England, but that process took about 11 days to complete with the SQl API of Apache Sedona. When I was developing that part of my project, I had tried to solve it using Spatial RDDs, as suggested by <a href="https://ameliaholcomb.github.io/">Amelia Holcomb</a> initially, but sadly, the documentation of some of the features in Sedona are still in developing stages so I put that away. Because I had created an improved version of the trees layers, I had to repeat the estimation, but I couldn’t wait 11 more days, even though I had that code running, so I decided to go back to the Spatial RDDs. However, I had one big problem, the tree segmentation, which already takes a couple of hours, outputs a geopackage, and Apache Sedona, or at least the RDD API, is not functional with this type of vector data, so I had to transform that to a geoparquet. To do so, I found an optimal way to group tree tiles using the <a href="https://digimap.edina.ac.uk/help/our-maps-and-data/bng/">UK National Grid system</a>, which divides the country into equally-sized squares of 1, 5, 10, 25, 50, 100 km. I used the 50 km size to group the tree tiles, and then optimised my existing code to add RDD capabilities, that I hadn’t been able to do a couple of months ago. One difference now, is that instead of using the tree polygon I am using the centroid and treating the tree as a point, as that simplifies <em>Within</em> spatial joins. This change took me a while to implement but I could finish the calculation in 12 hours instead of 11 days. I’m pretty sure it is possible to optimise even more but it’s good enough for now.</p><p>In addition to this, I also modified the calculation of spectral indexes from Sentinel-2 images to get the max value of NDVI per month and extract the median for a year and then compare between 2024 and 2016 as a measure of change in water, vegetation and built-up surfaces. By implementing all these changes and also because Ronita asked me to produce some figures, I accidentally found a way to scrape a Web Map Service and get tiles at the native highest resolution. I did a mini example trying to scrape the aerial images from Digimap and compare them to what I had used in my Masters project and it works. The only caveat is that they come with a label at the bottom of the image and they are not georeferenced, but this is not necessary for deep learning processing, also because how I’ve scraped them is using the national grid, so I know the coordinates I am requesting and can georeference after processing. Check the mini map I’ve included in the notes displaying how the statistical geographies (local authorities) overlap with the national grid, which is how most data is divided, such as the Vegetation Object Model or Aerial and LiDAR images.</p>···<p>I applied to the turing enrichment scheme hoping I get a place there starting from the next academic year and I also applied for the <a href="https://eslab.ai/">Earth System Lab</a> program for the coming summer.</p>-<p>On a side note, this last weekend was the best weather in months in Cambridge and I feel it deserves a shouout in the notes. I also got a new bike to replace my old mountain bike, that I’ve had for two years (for those reading in the future: you don’t need a mountain bike in Cambridge, look at a map 😉!!).</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Towards Forester 5.0: a design for global identity</title><link href="https://www.forester-notes.org/OYOJ/" rel="alternate"></link><published>2025-03-08T12:17:14Z</published><updated>2025-03-08T12:17:14Z</updated><author><name>Jon Sterling</name></author><id>https://www.forester-notes.org/OYOJ/</id><summary type="html"><p>As we move closer to <a href="https://www.forester-notes.org/jms-011P/">Forester 5.0</a>, which <a href="https://www.forester-notes.org/30FN/">introduces</a> rudimentary federation capabilities, we must address new problems that did not arise in the days when no two <a href="https://www.forester-notes.org/tfmt-000R/">forests</a> interacted or linked to each other. The most immediate issue is that trees describing entities with “global” identity (including actual people as well as bibliographic references) will naturally be duplicated across many forests. For example, this happens when one person authors trees in multiple forests, and it happens even more often with bibliographic entries (both for the entries themselves and their author attributions). It is very important to handle this problem properly <em>now</em> in a way that (1) minimises friction and (2) enables us to quietly evolve toward <a href="https://www.forester-notes.org/klepmann-et-al-atproto-2024/">more Web-centric approaches to identity as they emerge</a>.</p><p>Below, I survey some existing approaches to identity that we would hope to be compatible with at some level. If you want to skip to my concrete proposal, see <a href="https://www.forester-notes.org/OYOR/">§ OYOR/</a>.</p>···<p>I am hoping to hear other people’s thoughts on this proposal, including any constructive criticisms or suggestions for how we might go about implementing it. You can write to me or the <a href="mailto:~jonsterling/forester-discuss@lists.sr.ht">mailing list</a> with your feedback.</p>-</section></summary><category term="Forester Blog"></category></entry><entry><title>Socially self-hosting source code with Tangled on Bluesky</title><link href="https://anil.recoil.org/notes/disentangling-git-with-bluesky" rel="alternate"></link><published>2025-03-08T00:00:00Z</published><updated>2025-03-08T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/disentangling-git-with-bluesky</id><summary type="html"><p>I've been an avid user of <a href="https://github.com">GitHub</a> since its launch, and it really has revolutionised how communities come together to work on open source. In recent years though, I find myself utterly overwhelmed by its notifications and want to experiment with <a href="https://www.offlineimap.org/github/2016/03/08/github-pr-suck.html">alternative workflows</a>. This experimentation also has a more serious undertone due to the increasing need for <a href="https://www.boell.de/en/2025/01/24/trump-and-big-tech-europes-sovereignty-stake">data sovereignty</a> and so I'm starting to move my source code to self-hosted solutions that are less reliant on centralised services.</p><p>This has also come up persistently over the years in the <a href="https://ocaml.org">OCaml</a> community, with questions over why participation in packaging <a href="https://discuss.ocaml.org/t/publishing-without-github/3232">requires a GitHub account</a> ever since the <a href="https://anil.recoil.org/notes/opam-1-1-beta">early days</a> of opam. I've never found a good answer... until now, with the launch of an exciting <a href="https://tangled.sh">new service</a> that's built over the same protocol that <a href="https://bsky.app">Bluesky</a> uses.As I <a href="https://anil.recoil.org/notes/atproto-for-fun-and-blogging">noted</a> a few weeks ago, the <a href="https://atproto.com/">ATProto</a> can be used for more than just microblogging. It can also be an <em>identity</em> layer, across which other applications can be built which reuse the social fabric from Bluesky accounts.</p><p>&quot;<a href="https://tangled.sh">Tangled</a>&quot; is a new service launched (just yesterday!) by <a href="https://tangled.sh/@oppili.bsky.social">@opilli</a> and <a href="https://tangled.sh/@icyphox.sh">@icyphox</a> to manage Git repositories. I'm having a lot of fun trying it out, even in its early alpha stages! The coolest thing about Tangled is that you can self-host your own <a href="https://blog.tangled.sh/intro">knots</a>, which control where the source code repositories are actually stored.</p>···<p>If you'd like to try this out, then the <a href="https://tangled.sh/@anil.recoil.org/knot-docker/">Knot Docker</a> repository welcomes your issues!</p><p>Many thanks to Zicklag and icyphox on <a href="https://web.libera.chat/#tangled">tangled IRC</a> for helping me out with debugging the Knot setup and <a href="https://tangled.sh/@tangled.sh/core/commit/477da124ad0bdeeab5b621b81999683256ab7a4b">fixing bugs in real-time</a>. 12th Mar 2025: updated with <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a> comments.</p>-</small></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Our EEG group discussion on 'useful' AI tools</title><link href="https://anil.recoil.org/notes/the-state-of-ai-tools" rel="alternate"></link><published>2025-03-07T00:00:00Z</published><updated>2025-03-07T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/the-state-of-ai-tools</id><summary type="html"><p><a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> organised this week's <a href="https://www.cst.cam.ac.uk/research/eeg">EEG</a> group <a href="https://www.cst.cam.ac.uk/seminars/list/229027">discussion</a> on what AI tools we use for our daily work. I was immediately struck by how <em>few</em> tools there are that are actually making us more productive, so I jotted down notes as the discussion was going on.</p><li>Personally, the only tool I've found that's (only just recently) making me more productive is agentic coding, which I <a href="https://anil.recoil.org/notes/claude-copilot-sandbox">wrote about a few days ago</a>. Since then, I've been mildly obsessively forking off ideas I've wanted to try for years (like converting RFCs to OCaml code) and greatly enjoying myself. <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> and I have been looking for how to do this more ethically, and the best I ran across was the <a href="https://www.ibm.com/impact/ai-ethics">IBM AI ethics</a> guidance and their <a href="https://github.com/ibm-granite/granite-code-models">granite models</a>, but not much else. Any pointers to other models that don't violate open source licensing norms would be gratefully accepted; I'm using Claude 3.7 here, but don't feel great doing so!</li><li><a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> described his use of <a href="https://fathom.video/">Fathom</a> for note-taking, and (having been on the receiving end) can confirm it does a very good transcription job.</li>···<li>And for something completely different, another team released their <a href="https://google-research.github.io/self-organising-systems/difflogic-ca/">Differentiable Logic Cellular Automata</a> paper which describes how to go from the <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a> to full pattern generation using learned recurrent circuits. This one should really be read in its entirity to appreciate how incredible it might become in the future, as it would allow us to generate distributed systems that can build a very complex end-goal pattern by following a set of simple rules. <a class="contact" href="https://coomeslab.org">David A Coomes</a> pointed out to me recently that the question of <a href="https://www.wired.com/story/mystery-solved-how-plant-cells-know-when-to-stop-growing/">why cells stop growing</a> has only very recently been understood in traditional biology, and yet here we are applying ML to the case.</li><li><a href="https://mistral.ai/fr/news/mistral-ocr">Mistral OCR</a> came out today and seems to be the state of the art in multi-modally breaking down documents into a consistent linear structure. Their results show that they can break down complex PDFs in multiple languages into seemingly clean HTML with semantic structure (such as tables, equations, figures and so on). I've only just finished running <a href="https://anil.recoil.org/projects/ce">millions of papers</a> through <a href="https://grobid.readthedocs.io/en/latest/">Grobid</a>, so this is next on the queue to try out...</li>-<p>So, I guess the TL;DR of our discussion was that current AI tools are the first generation, but we're heading rather rapidly into new frontiers of discovery, so there's only going to be more of them coming up...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Are you still using OCaml 4.08 or earlier? If so, we need to know</title><link href="https://anil.recoil.org/notes/deprecating-ocaml-408" rel="alternate"></link><published>2025-03-05T00:00:00Z</published><updated>2025-03-05T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/deprecating-ocaml-408</id><summary type="html"><p>I started pushing OCaml Docker images over to the <a href="https://hub.docker.com/r/ocaml/opam">Docker Hub</a> in around 2017, to support the burgeoning automated build infrastructure around the use of the language. Back then, OCaml 4.06 was the latest release, and so I wrote an <a href="https://github.com/ocurrent/ocaml-version/blob/master/CHANGES.md">ocaml-version</a> library to track the release metadata. It has been a bit of a success disaster, as that library now <a href="https://github.com/ocurrent/ocaml-version/blob/master/CHANGES.md">tracks</a> every release of OCaml in the modern era, and also backs the <a href="https://github.com/ocurrent/docker-base-images">automatic building</a> of a huge array of compiler versions and variants across <a href="https://images.ci.ocaml.org/?distro=debian-12&amp;">Linux</a> and <a href="https://images.ci.ocaml.org/?distro=windows-msvc&amp;">Windows</a>.</p><p>The problem is...we're now building the full set of images from OCaml 4.02 onwards through to the latest OCaml 5.3.0 release, which is unsustainable for obvious reasons; despite the hosting being kindly <a href="https://www.docker.com/community/open-source/application/">sponsored by Docker</a>, we must also consider the <a href="https://ocaml.org/policies/carbon-footprint">carbon footprint</a> of our infrastructure.So the question for the OCaml community: <strong>are there are any remaining users who still need images earlier than OCaml 4.08 or can we can stop pushing those now?</strong></p><p><a class="contact" href="https://github.com/hannesm">Hannes Mehnert</a> lead an effort to deprecate compilers earlier than 4.08 <a href="https://discuss.ocaml.org/t/opam-repository-archival-phase-2-ocaml-4-08-is-the-lower-bound/15965">in the opam-repo</a>, and now <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> is asking the same question <a href="https://discuss.ocaml.org/t/docker-base-images-and-ocaml-ci-support-for-ocaml-4-08/16229">on the OCaml discussion forum</a> about the Docker image infrastructure. The latter lags the opam repository since there still may be operational usecases of industrial users who depend on older compilers, even if they don't use the latest package repository. So if you <em>are</em> using a really old OCaml and depend on our infrastructure, we'd appreciate you chiming in on the <a href="https://discuss.ocaml.org/t/docker-base-images-and-ocaml-ci-support-for-ocaml-4-08/16229">forum thread</a> or just contact <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> or myself directly to let us know.</p>-<p>On another note, it's also quite difficult on the central <a href="https://hub.docker.com/">Docker Hub</a> to get statistics per-tag as to how many people are using each image. Does anyone have any recommendations on whether we should deploy our own &quot;proxy registry&quot; before pushing through to the central Docker Hub, or alternative open source registries to run our own?</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 3rd March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-03/" rel="alternate"></link><published>2025-03-03T09:07:12Z</published><updated>2025-03-03T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-03/</id><summary type="html"><h1>Last week</h1><p>As indicated <a href="/weeknotes/2025-02-24/">last week</a>, I spent some time learning how to use both <a href="https://go.dev">Go</a> for <a href="https://webassembly.github.io/spec/core/index.html">Web Assembly</a> and with <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers">Web Workers</a> for parallelism in the browser. I <a href="/blog/go-wasm-workers/">wrote a long post</a> about the details if that's of any interest.</p>···<p>I happened across <a href="https://parsl-project.org">Parsl</a>, which isn't a parser, but a Python parallelism library. I've not tried it yet, but obviously it's relevant to the kind of thing I work on, so I should.</p>-</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 3 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-03.html" rel="alternate"></link><published>2025-03-03T00:00:00Z</published><updated>2025-03-03T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-03-03.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Oh my Claude, we need agentic copilot sandboxing right now</title><link href="https://anil.recoil.org/notes/claude-copilot-sandbox" rel="alternate"></link><published>2025-03-02T00:00:00Z</published><updated>2025-03-02T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/claude-copilot-sandbox</id><summary type="html"><p><a class="contact" href="https://github.com/yminsky">Yaron Minsky</a> nerdsniped me last week into getting OCaml to drive the 80s-retro <a href="https://www.adafruit.com/product/2345">RGB Matrix</a> displays. I grabbed one from the local Pi Store and soldered it together with help from <a class="contact" href="https://mynameismwd.org">Michael Dales</a>. But instead of writing OCaml bindings by hand, we thought we'd try out the latest agentic CLI called <a href="https://github.com/kodu-ai/claude-code">Claude Code</a> released <a href="https://ai-claude.net/">last week</a> to see if we could entirely autogenerate the bindings.</p><p><em>TL;DR:</em> Claude Coder generated working OCaml code almost from scratch, ranging from C bindings to high-level OCaml interface files and even Cmdliner terms, but needs a more sophisticated sandboxing model before something goes horribly wrong. So much potential and so much danger awaits us. Coincidentally <a class="contact" href="https://web.eecs.umich.edu/~comar/">Cyrus Omar</a> and <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> and I <a href="https://anil.recoil.org/papers/2024-hope-bastion">wrote</a> about this a few months ago. Read on...</p>···<p>Once you have this specification, then it's a matter of implementing fine-grained OS-level sandboxing policies to interpret and enforce them. Spoiler: we're working on such a system, so I'll write about that just as soon as it's more self-hosting; this area is moving incredibly fast.</p><p>Thanks to <a class="contact" href="https://mynameismwd.org">Michael Dales</a> for help soldering. For the curious, here's the <a href="https://github.com/yminsky/rpi-rgb-led-matrix/pull/3">PR with the code</a>, but it shouldn't go anywhere near any real use until we've had a chance to review the bindings carefully. There needs to be a new, even more buyer-beware no-warranty license for AI generated code!</p>-</small></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A hardware description language using OCaml effects</title><link href="https://anil.recoil.org/ideas/tracing-hdl-with-effects" rel="alternate"></link><published>2025-03-01T00:00:00Z</published><updated>2025-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/tracing-hdl-with-effects</id><summary type="html"><h1>A hardware description language using OCaml effects</h1><p>This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://kcsrk.info">KC Sivaramakrishnan</a> and <a class="contact" href="https://github.com/andrewray">Andy Ray</a>.</p>the problem domain. OCaml has the <a href="https://anil.recoil.org/notes/fpgas-hardcaml">HardCaml ecosystem</a> to···<a href="https://anil.recoil.org/ideas/computational-storage-for-vector-dbs">usecases</a> for using heterogenous hardware like FPGAs these days.There's a great <a href="https://signalsandthreads.com/programmable-hardware/">Signals and Threads episode</a> on-programmable hardware with <a class="contact" href="https://github.com/andrewray">Andy Ray</a> that should give you more useful background knowledge as well.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>2025-02-28 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/02/28/weekly-notes.html" rel="alternate"></link><published>2025-02-28T00:00:00Z</published><updated>2025-02-28T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/02/28/weekly-notes</id><summary type="html"><p>This week I focused mostly on checking why I had some empty rows in the estimation of the canopy cover and the tree count from the Vegetation Object Model. After investigating the code, I found that the issue was behind a try/except clause that was masking corrupted files. Now, this was the intended behaviour originally, as some files can’t be read, however, because the data processing is done at the geographic statistical level (read <a href="https://www.ons.gov.uk/census/census2021dictionary/areatypedefinitions">ONS</a>), and the VOM tiles come in 5x5 km files (following GB National Grid), even when one file can’t be read, the other ones wouldn’t be processed either. With the new small correction, only the corrupted files are not processed and the rest of the files are processed as intended. So from the 5402 tiles, only 26 can’t be read.</p><p>In addition to this, I wanted to reduce the over segmentation of trees from the VOM, because I was getting way more tree points than there actually are (at least visually), which leads to an overestimation of the number of trees. To do so, two changes were made thanks to chatGPT 🙃:</p>···<p>In other news, I got rejected from the IPCC Chapter Scientist application I sent a couple of weeks ago 😕, but I got a follow up email to fill in a form for a visitng student position in one of the big tech companies 🤓 for the summer, which doesn’t mean that I passed a filter round, it just means that they are collecting more info than there is in the CV.</p>-<p>Finally, I also attended a workshop organised by London Data Visualisation on how to make 3D maps in Blender. It was taught by <a href="https://www.julian-hoffmann-anton.com/">Julian Hoffman Anton</a> in the Canva HQ in London. It was pretty cool to see what you can do when you combine GIS data with Blender. I’m not sure if I will use it in the future, but it was a nice experience to see how you can make 3D maps with minimal coding and a lot of creativity. The picture below is my attempt at trying to visualize the tallest coastal mountain in the world (Sierra Nevada de Santa Marta) using Google imagery and open topography data.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>The AIETF arrives, and not a moment too soon</title><link href="https://anil.recoil.org/notes/ai-ietf-aiprefs" rel="alternate"></link><published>2025-02-28T00:00:00Z</published><updated>2025-02-28T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ai-ietf-aiprefs</id><summary type="html"><p>The <a href="https://ietf.org">IETF</a> <a href="https://bsky.app/profile/ietf.org/post/3lj6w5fpjx22u">announced</a> their new <a href="https://www.ietf.org/blog/aipref-wg/">AI Preferences Working Group</a> (AIPREF), which will <em>&quot;work on standardizing building blocks that allow for the expression of preferences about how content is collected and processed for Artificial Intelligence models&quot;</em>. This is quite well timed; the IETF tries not to standardise too early before there is <a href="https://www.ietf.org/runningcode/">running code</a> but also needs to move before it's too late and a bad defacto standard is <a href="https://datatracker.ietf.org/doc/html/rfc7282">chosen</a>. The AI world seems to be at that nexus point right about now, with <a href="https://openai.com/index/introducing-gpt-4-5/">GPT 4.5</a> seemingly hitting a <a href="https://www.newscientist.com/article/2470327-is-openai-hitting-a-wall-with-huge-and-expensive-gpt-4-5-model/">scaling wall</a> and possibly triggering the start of a renewed data scraping frenzy.</p><p>I've found when developing my own website there are a number of approaches to interacting with automated data crawlers. For the record, over 90% of the traffic to this site is from automated sources, so it's a material concern for <a href="https://anil.recoil.org/news?t=selfhosting">selfhosting</a> infrastructure.</p>···<p>Luckily, the IETF do a lot of things over email, so I've signed up to the <a href="https://mailman3.ietf.org/mailman3/lists/ai-control.ietf.org/">AIPREF mailing list</a> to learn more as it develops and hopefully participate!</p><p>Changelog. Mar 1st 2024: Thanks to <a class="contact" href="https://mynameismwd.org">Michael Dales</a> for spotting typos, and <a href="https://bsky.app/profile/aftnet.bsky.social">Antoine Fressancourt</a> for helpful clarifying questions on Bluesky.</p>-</small></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Blogging BIOSPACE25!</title><link href="http://localhost:4000/2025/02/28/biospace.html" rel="alternate"></link><published>2025-02-28T00:00:00Z</published><updated>2025-02-28T00:00:00Z</updated><author><name></name></author><id>http://localhost:4000/2025/02/28/biospace</id><summary type="html"><h1 id="blogging-biospace25">Blogging BIOSPACE25!</h1>···<img alt="" src="http://localhost:4000/images/posts/biospace/gandolfo.jpg" style="width: 600px; height: auto;" />-</p></summary><category term="Onkar Gulati"></category></entry><entry><title>Tue 25 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-25.html" rel="alternate"></link><published>2025-02-25T00:00:00Z</published><updated>2025-02-25T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-02-25.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using Go with Wasm and Web Workers</title><link href="https://digitalflapjack.com/blog/go-wasm-workers/" rel="alternate"></link><published>2025-02-24T15:08:58Z</published><updated>2025-02-24T15:08:58Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/go-wasm-workers/</id><summary type="html"><p>These are some notes for myself about trying to use Wasm and Web Workers to achieve some level of parallelisation in the browser. This isn't meant to be a comprehensive tutorial, but there are so many broken tutorials or half bits of documentation out there, I thought I should leave myself a note here. This is just the result of an afternoon of spelunking to try and work out how to do this, and should not be considered comprehensive.</p>···<p>I found myself shuddering slightly at this apparent return to <a href="https://en.wikipedia.org/wiki/Java_applet">Java applets</a> and <a href="https://en.wikipedia.org/wiki/ActiveX">ActiveX</a>. At least the security model is better thought out this time around it seems.</p>-<span><a class="fn-label" href="#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Digital Flapjack"></category></entry><entry><title>Weeknotes: 24th February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-24/" rel="alternate"></link><published>2025-02-24T09:07:12Z</published><updated>2025-02-24T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-24/</id><summary type="html"><h1>Last Week</h1><p>As started <a href="/weeknotes/2025-02-17/">last week</a>, I finished the changes to let you run the <a href="https://github.com/quantifyearth/life/">LIFE pipeline</a> using the bulk data downloads from the <a href="https://iucnredlist.org/">IUCN Red List</a> website, which give you a bunch of CSV files of species data and then some shapefiles of range data. Previously I'd been using a PostGIS database with all the data in, but not everyone has one of those to hand, and I want to make it was easy as possible for others to run the pipeline to reproduce our work.</p><p>After being very impressed last week at the behaviour of <a href="https://duckdb.org/">DuckDB</a>, particularly in the way it'd let me do spatial queries, I did realise that the performance of <code>ST_UNION_AGG</code>, it's version of PostGIS's <code>ST_UNION</code> was significantly slower than just pulling the different ranges for a species and using <a href="https://shapely.readthedocs.io/en/stable/manual.html">shapely</a> to unify them in Python. It's still a hugely useful tool, but normally I'm happy to let PostGIS do such unions, but for DuckDB I just need to be a bit more cautious.</p>···<p>We had a meeting this week about future LIFE metric work, and so I need to write up bits of that, as we did sensibly set a deadline for some progress updates in a month!</p>-<p>I still owe Simon Tarr a way to run the AoH pipeline via Docker that I said I'd do a few weeks ago, and I need to follow up with Chess on our differences in species filtering - though hopefully an easier thing to track with my new reporting output.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>2025-02-21 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/02/21/weekly-notes.html" rel="alternate"></link><published>2025-02-21T00:00:00Z</published><updated>2025-02-21T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/02/21/weekly-notes</id><summary type="html"><p>So back to the routine after coming from Italy for BIOSPACE25. It was a really great experience in the ESA HQ but I got a cold from Italy 😷.</p><p>This week started by going to the Social and Spatial Epidemiology Module from the <a href="https://www.phs.group.cam.ac.uk/">PHS MPhil</a> in the Biomedical Campus. It’s originally desgined to help public health students understand that it is a spatial domain, with all that it means. I really enjoyed the course in that I was exposed to things that I wasn’t aware of like redlining and gerrymandering in the US.</p>···<p>In other endeavors, I started working on the side project of building a digital twin for the university for which I’m going to use the proprietary software by Esri, since all the spatial infrastructure in the University is handled with ArcGIS. It’s a very exciting project with Ramit Debnath and Emily So and will write about it once everything is in a working stage.</p>-<p>Finally, I redveloped my interactive map of the 3-30-300 rule in England using the updated methodology. I used CARTO for this one and included a couple of widgets that allow the user to filter the map by local authorities or regions in England. It turns out that building these dashboards is more straightforward than I thought in this platform than it is in other platform (looking at you Esri). The power of visualizing the data and not the numbers is that you see patterns or mistakes in your data processing pipeline. Check the map <a href="https://pinea.app.carto.com/map/f4087ee0-7565-4902-bd8f-eb8fe30c0b37">here</a></p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>A trio of papers I read on biodiversity and forests this week</title><link href="https://anil.recoil.org/notes/forest-apps-and-benchmarks" rel="alternate"></link><published>2025-02-20T00:00:00Z</published><updated>2025-02-20T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/forest-apps-and-benchmarks</id><summary type="html"><p>This week I've been reading three really nice pieces of work by mycolleagues, in the form of a <a href="https://www.nature.com/articles/s44358-025-00022-3">review paper</a> on biodiversity and AI,a <a href="https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.14503">benchmark</a> for 3D forest reconstruction using laser scanners and a <a href="https://github.com/MingyueX/GreenLens">mobile app</a> for measuring the width of tree trunks. A real bonanza for forest lovers!</p>···-- <cite><a href="https://www.cst.cam.ac.uk/using-ai-see-wood-trees">Frank and Keshav on cam.ac.uk</a></cite></p><p><figure class="image-center"><img alt="I actually got quite distracted while trying to beta test GreenLens in India as I ran across these adorable stray street puppies, which seems important to post" class="content-image" src="https://anil.recoil.org/images/pups-india-1.webp" title="I actually got quite distracted while trying to beta test GreenLens in India as I ran across these adorable stray street puppies, which seems important to post" /><figcaption>I actually got quite distracted while trying to beta test GreenLens in India as I ran across these adorable stray street puppies, which seems important to post</figcaption></figure>-</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 17th February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-17/" rel="alternate"></link><published>2025-02-17T09:07:12Z</published><updated>2025-02-17T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-17/</id><summary type="html"><h1>Last Week</h1><p>For the <a href="https://github.com/quantifyearth/life/">LIFE extinction-risk metric pipeline</a>, all the species data comes from the <a href="https://www.iucnredlist.org/">IUCN Red List</a>, and this week I began a job I'd been intending to do for a while to make that stage pragmatically accessible to people trying to run our pipeline externally.</p><p>Originally, as LIFE was being developed, the species data was manually downloaded from the Red List website using their bulk download facility, which gives you a ZIP file of CSVs for the empirical data, and then another set of ZIPs that contain the polygon range data. These had then been run through a mixture of hand processing and Python scripting to filter it down to the appropriate species for the LIFE metric. As we came to publication I wanted to automate this, which I did, but at that stage, because I was working closely with the IUCN on implementing their <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR metric</a> in addition to the LIFE metric, which both start with the raw Red List data, I had all the information stored in a PostGIS database, and my code runs against that currently. The contents of the database is the same raw Red List data from the bulk downloads, but is just easier to work with rather than a bunch of different files in different formats to ingest.</p>···<p>We are starting up some new research threads around plants, and I have a bunch of meetings on this topic this week, so I'll need to switch my brain over to prep work for those meetings.</p>-<p>A lapsed-hacker can dream, right?</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Vpnkit, Void Processes, LSP Servers</title><link href="https://patrick.sirref.org/weekly-2025-02-17/" rel="alternate"></link><published>2025-02-17T00:00:00Z</published><updated>2025-02-17T00:00:00Z</updated><author><name>Unknown</name></author><id>https://patrick.sirref.org/weekly-2025-02-17/</id><summary type="html"><p>Previous <a href="https://patrick.sirref.org/weeklies/">weeklies</a> used <strong>strong</strong> emphasis to distinguish sections. This comes from <a href="https://patrick.sirref.org/forester/">Forester</a>'s philosophy about atomicity of the content in your <em>forest</em>. </p><p>However, <em>subtrees</em> are supported! I quickly hacked together the ability to use <em>subheadings</em> to indicate <em>subtrees</em>. This is strictly less expressive than the <code>\subtree{}</code> of <a href="https://patrick.sirref.org/forester/">Forester</a>'s default syntax as we cannot <em>close</em> heading sections in Markdown. </p>···<p><a href="https://patrick.sirref.org/anilmadhavapeddy/">Anil</a> and I had a great conversation this week about building community especially as it pertains to open-source and OCaml. </p><p>I've been going back over <a href="https://patrick.sirref.org/ostrom-gtc/">Governing the Commons</a>, but have already discovered <a href="https://patrick.sirref.org/franklin-rwt/">The Real World of Technology</a>! </p>-</section></summary><category term="Weeklies"></category></entry><entry><title>Mon 17 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-17.html" rel="alternate"></link><published>2025-02-17T00:00:00Z</published><updated>2025-02-17T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-02-17.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Thoughts on the National Data Library and private research data</title><link href="https://anil.recoil.org/notes/uk-national-data-lib" rel="alternate"></link><published>2025-02-17T00:00:00Z</published><updated>2025-02-17T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/uk-national-data-lib</id><summary type="html"><p>Over the past year, <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and I have been getting an object lesson in how the modern Internet handles researcher access to data, as we've been downloading tens of millions of research papers towards our <a href="https://anil.recoil.org/projects/ce">Conservation Evidence</a> project. This is legally possible via our <a href="https://www.lib.cam.ac.uk/stories/student-guide-libraries">institutional subscriptions</a> that give us license to fulltexts, and the incredibly helpful <a href="https://uk.linkedin.com/in/james-caudwell-60681766">head of electronic services</a> at the University Library who wields encyclopedic knowledge of each of our agreements with the hundreds of publishers out there. My thoughts on this then segwayed into recent conversations I've been having about the emerging <a href="https://takes.jamesomalley.co.uk/p/wtf-is-the-national-data-library">National Data Library</a> and also with the UK <a href="https://www.wildlifetrusts.org/">Wildlife Trusts</a>...</p><p>In late 2023, once we got past the legal aspects of downloading closed access papers<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup> it was still remarkably difficult to <em>actually</em> gain access to the actual paper datasets themselves. For instance, a select few hurdles include:</p>···<p>This largely involved talking to individual publishers and agreeing not to directly train generative AI models and to keep them private to our own research use. Fairly reasonable stuff.</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>BIOSPACE25 Blog</title><link href="https://ancazugo.github.io/research/outreach/2025/02/14/biospace25-blog.html" rel="alternate"></link><published>2025-02-14T00:00:00Z</published><updated>2025-02-14T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/research/outreach/2025/02/14/biospace25-blog</id><summary type="html"><h2 id="day-2">Day 2</h2><h3 id="my-presentation-available-to-watch-here">My presentation (available to watch <a href="https://www.youtube.com/live/e-eQ8XhRrsE?si=lv0p4CV3kdKGxmTk&amp;t=14326">here</a>)</h3>···<li>Integrated Biologging Framework. Integrating magnetic data from EO with bird migration data</li><li>Funnily enough, I didn’t meet many Spanish speakers in the conference, but I ended up going to a bar after the conference with a group coming from the Adplfo Ibáñez University in Chile and a couple of other South Americans from different European institutions. I spoke with Laura Pérez-Giraldo, who works on using remote sensing in the Chilean Andes to understand plant diversity and pollination. There’s some possibility for collaboration in the future with the effect of trees on mental health in poor areas in Santiago.</li>-</ul></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>`nmcli` connection to internal WiFi</title><link href="https://mort.io/blog/internalcl-wifi/" rel="alternate"></link><published>2025-02-14T00:00:00Z</published><updated>2025-02-14T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/internalcl-wifi/</id><summary type="html"><p>Using my fancy (?) new(-ish) Linux laptop running <a href="https://nixos.org/">NixOS</a>, I···</span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">nmcli</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-keyword z-operator z-assignment z-redirection z-shell">&gt;</span> quit</span><p>Obviously you will need to provide your own values for <code>YOUR-IDENTITY</code> and-<code>YOUR-PASSWORD</code> :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Updated preprint on quantifying biodiversity cost of food consumption</title><link href="https://anil.recoil.org/news/2024-food-life-2" rel="alternate"></link><published>2025-02-12T00:00:00Z</published><updated>2025-02-12T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-food-life-2</id><summary type="html"><p>We've uploaded a revised preprint on our ongoing work on quantifying the <a href="https://anil.recoil.org/papers/2024-food-life">biodiversity cost of global food consumption</a>, lead by <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball">Thomas Ball</a>. This is based on the <a href="https://anil.recoil.org/news/2024-life-3">recently published</a> <a href="https://anil.recoil.org/projects/life">LIFE</a> metric, combined with supply chain data and provenance modeling. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-food-life-2">196 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-food-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 10th February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-10/" rel="alternate"></link><published>2025-02-10T09:07:12Z</published><updated>2025-02-10T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-10/</id><summary type="html"><h1>Last week</h1><p>I hand't planned this, but I spent a day reworking the <a href="https://github.com/quantifyearth/yirgacheffe/">Yigacheffe</a> APIs towards what I've always thought of as the next major version interface, and had filed under &quot;mañana&quot; due to other work being more important. But inspired by one of the part II projects I'm supervising (final year undergrad for those not from Cambridge), I decided I really needed to fix up the APIs to make them cleaner.</p><p>Yirgacheffe has some clunky parts to the API where it fails to meet the aim I have that working on maps should result in Python code that clearly follows the methodology rather than dealing with house keeping around the data. In a lot of areas I like to think I've been successful; for example, it will deal with loading in data in small chunks to as to fit within memory. But other parts expose the fact that the API didn't originally still required you to work with array data via simple operators, so you had to manually tell Yirgacheffe how to align the data you were using.</p>···-<p>After all the work described above, the main thing I want to do is tidy up a couple of the other rough API edges that are just down to poor naming rather than being particularly structural. If I can get those done, then I think a 1.0 party can occur in the next week or so.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Teaching, teaching, teaching...</title><link href="https://patrick.sirref.org/weekly-2025-02-10/" rel="alternate"></link><published>2025-02-10T00:00:00Z</published><updated>2025-02-10T00:00:00Z</updated><author><name>Unknown</name></author><id>https://patrick.sirref.org/weekly-2025-02-10/</id><summary type="html"><p>On paper, I don't have that many students. I teach four undergraduates (first year students at Pembroke College) <a href="https://patrick.sirref.org/discrete-maths/">Discrete Maths</a>. I supervise three third year students for their <a href="https://patrick.sirref.org/part-ii-2024/">final year project </a> and another one I co-supervise with <a href="https://patrick.sirref.org/mdales/">Michael Dales </a>. However, I do end up spending at least two full days a week on teaching. Something I really enjoy and take seriously. The time it takes is also quite unpredictable; last week for instance all the third year students had their mid-project demonstrations (a five-minute presentation in front of their peers and a few professor-types). My first year students also found two slides particularly challenging to understand from their lectures and asked if I could help explain what was going on, so I <a href="https://patrick.sirref.org/dm-note.pdf">produced some materials for that </a>. </p>···<img alt="Woman in an Orchard (Spring Sunshine in the Meadow at Eragny)." src="pissarro.jpeg" width="400" /><figcaption>Woman in an Orchard (Spring Sunshine in the Meadow at Eragny)</figcaption>-</figure></summary><category term="Weeklies"></category></entry><entry><title>Mon 10 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-10.html" rel="alternate"></link><published>2025-02-10T00:00:00Z</published><updated>2025-02-10T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-02-10.html</id><summary type="html"><article>···<h3 id="write-up-research-ideas-for-website"><span class="todo TODO">TODO</span> write up research ideas for website</h3>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>The Cambridge "Green Blue" competition to reduce emissions</title><link href="https://anil.recoil.org/notes/cambridge-green-blue" rel="alternate"></link><published>2025-02-10T00:00:00Z</published><updated>2025-02-10T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/cambridge-green-blue</id><summary type="html"><p><a class="contact" href="https://mlg.eng.cam.ac.uk/carl/">Carl Edward Rasmussen</a> recently gave a great <a href="https://watch.eeg.cl.cam.ac.uk/w/qEsMt2Ayk37SaKgxrfwoBt">talk</a> in our group about his thoughts on <a href="https://mlg.eng.cam.ac.uk/carl/words/mechanisms.pdf">mechanisms against climate change</a>. He persuasively argued that the <a href="https://unfccc.int/process-and-meetings/the-paris-agreement">Paris Agreement</a> was doing more harm than good by giving the <em>illusion</em> of being a concrete agreement, but is in reality a huge distraction. Our actual <a href="https://ourworldindata.org/co2-emissions">emissions</a> have increased since the Paris agreement was signed!</p><p>Carl <a href="https://www.youtube.com/watch?v=naFaQsFxs1g">argues</a> that a climate system ultimately only responds to collective actions, and without a global cooperative incentive each nation will spring back to their own isolated short-term incentives that lead to an increase in fossil fuel burning. He has just published the &quot;<a href="https://mlg.eng.cam.ac.uk/carl/climate/themis0.pdf">Themis Mechanism</a>&quot; as a simple alternative for equitable global emission reduction (<a href="https://mlg.eng.cam.ac.uk/carl/climate/themis.pdf">long form</a>).</p><p>This got me brainstorming with Carl about how to test his theories out and we came up with an idea that is either terrible or awesome; please read on and judge appropriately. I think we should take advantage of Cambridge's unique structure to trial the Themis mechanism via a new <strong>competitive decarbonisation sporting league among Colleges that I dub the &quot;Cambridge Green Blue&quot;</strong>. Given the Chancellor's recent unveiling of an <a href="https://www.theguardian.com/business/2025/jan/28/reeves-plans-to-create-silicon-valley-between-oxford-and-cambridge">innovation corridor</a> between Oxford and Cambridge, the timing could not be better for an initiative like this. <em>(TL;DR sign up at the bottom of this post if you'd like to participate)</em></p>···<p>I promise I'm not a JMK shill, despite being a <a href="https://www.cshss.cam.ac.uk/research-info/j-m-keynes-fellowship-fund/j-m-keynes-fellows">JMK Fellow</a>.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-1"><p>The keen boardgame player will probably observe that there's always one player who decides to cause trouble just for fun, making everyone lose. This can be dealt with by social means.</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using AT Proto for more than just Bluesky posts</title><link href="https://anil.recoil.org/notes/atproto-for-fun-and-blogging" rel="alternate"></link><published>2025-02-09T00:00:00Z</published><updated>2025-02-09T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/atproto-for-fun-and-blogging</id><summary type="html"><p>While <a href="https://bsky.app">Bluesky</a> is taking off like a rocket, a number of us <a href="https://anil.recoil.org/notes/enter-the-matrix-hookshot">moving</a> towards <a href="https://anil.recoil.org/">self sovereign</a> digital infrastructure have been looking at how to use the Bluesky network for other uses than just short-form notes. This is possible because of my colleague <a class="contact" href="https://martin.kleppmann.com">Martin Kleppmann</a>'s hard work on the &quot;<a href="https://atproto.com/">AT Protocol</a>&quot; that underpins the Bluesky network. Martin recently gave us a <a href="https://talks.cam.ac.uk/talk/index/224767">deep-dive into the AT proto</a> in the Cambridge <a href="https://www.cl.cam.ac.uk/research/security/">security group</a>, which made me look into other uses of it more closely. As background, you may wish to read <a href="https://arxiv.org/abs/2402.03239">his paper</a> on the subject which explains the technical architecture extremely clearly.</p><p><a href="https://arxiv.org/pdf/2402.03239"> <figure class="image-center"><img alt="" class="content-image" src="https://anil.recoil.org/images/atproto-paper-ss-1.webp" title="" /><figcaption></figcaption></figure><p>One of the key problems this solves is one I'm having with using my <a href="https://en.wikipedia.org/wiki/ActivityPub">ActivityPub</a>-based services at the moment. Each of these services (like my <a href="https://crank.recoil.org">video</a> or <a href="https://amok.recoil.org">microblog</a> sites) do not share a common authentication system, and so each account is different. <a class="contact" href="https://nick.recoil.org">Nick Ludlam</a> and I are also thinking of renaming all of our services to go under the cleaner <code>recoil.org</code> domain rather than a subdomain, but this involves a fairly error-prone <a href="https://digitalflapjack.com/blog/hosting24/">migration</a> that lacks <a href="https://anil.recoil.org/ideas/activitypub-resilience">resilience</a> to domain change changes since they are baked into the ActivityPub protocol messages. The AT Protocol underpinning Bluesky deals with all these by decoupling the underlying authentication and identity system, and the content that's flowing over the network.</p>···<p>This is just the tip of the iceberg for the open web, of course. Excitingly, there are experiments ongoing to <a href="https://berjon.com/ap-at/?ref=cosmico.org">run ActivityPub over AT Proto</a> which describes how complementary these ecosystems are.And most excitingly from my personal perspective, is <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> successfully <a href="https://bsky.app/profile/patrick.sirref.org/post/3lh24rrjngw24">posting</a> from an up-and-coming <a href="https://github.com/patricoferris/ocaml-atproto-lexicon">OCaml ATProto</a> implementation. I'm looking forward to hacking in this ecosystem in 2025!</p>-<p><em>(Thanks David Gageot for spotting typos!)</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Sway</title><link href="https://ryan.freumh.org/sway.html" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/sway.html</id><summary type="html"><article>···in my configuration which you can find <a href="https://github.com/RyanGibb/nixos/tree/master/home/gui/wm">here</a>.</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Entering the Matrix with Hookshot</title><link href="https://anil.recoil.org/notes/enter-the-matrix-hookshot" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/enter-the-matrix-hookshot</id><summary type="html"><p>We've been happy users of <a href="https://matrix.org">Matrix</a> for our group communications in the <a href="https://www.cst.cam.ac.uk/research/eeg">EEG</a>. Today we've been bringing in more members of the wider group to using it instead of Slack. As part of that, I've set up a cool bot called <a href="https://github.com/matrix-org/matrix-hookshot">Hookshot</a> which allows Matrix to be connected to external services such as GitHub and Atom/RSS feeds. This is a test post to demonstrate to the members of the EEG how Matrix and Atom work!</p><p>The basic idea behind Hookshot is to provide a bridging service to communications rooms hosted on Matrix, in such a way that it can exert administrative control over a room to intercept requests for services (such as adding an Atom feed).</p><p>The setup for Hookshot can be a little involved as there are lots of encryption keys flying around. In a nutshell, I have a Docker container running it with a Yaml config of this nature:</p>···<p><figure class="image-center"><img alt="But it picked up my post! First!" class="content-image" src="https://anil.recoil.org/images/hookshot-ss-3.webp" title="But it picked up my post! First!" /><figcaption>But it picked up my post! First!</figcaption></figure>-<p>Hookshot supports a <a href="https://matrix-org.github.io/matrix-hookshot/latest/index.html">variety of other</a> services to bridge to as well, including <a href="https://matrix-org.github.io/matrix-hookshot/latest/setup/webhooks.html">webhooks</a> for arbitrary services. One of the most fun student projects I've supervised recently is &quot;<a href="https://anil.recoil.org/ideas/version-control-matrix">Decentralised Capability-based Code Collaboration using Matrix</a>&quot; in which <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a> built Git-patches-over-Matrix. If anyone wants to pick up on that and build a &quot;real&quot; version, perhaps we could use this for peer-to-peer coding! It might work really well with coding copilots, as they have a chat based interface anyway...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming FPGAs using OCaml</title><link href="https://anil.recoil.org/notes/fpgas-hardcaml" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/fpgas-hardcaml</id><summary type="html"><p>With the vast amount of data we have these days for our <a href="https://anil.recoil.org/projects/plancomp">planetary computing</a> processing, it's naturally tempting to use more hardware offload. The obvious choice, GPGPUs, are not a great fit for the problem due to the difficulty of unlocking high data parallelism for geospatial data. So it's back to an old technology I worked on <a href="https://anil.recoil.org/papers/2011-fccm-cloudfpga">twelve years ago</a> in the form of <a href="https://en.wikipedia.org/wiki/Field-programmable_gate_array">FPGAs</a>!</p><p>FPGAs are a very flexible way to execute boolean combinatorial logic, but are notoriously difficult to program. We have two possible angles to explore to address this. One is to design more declarative DSLs for data processing that compile to the FPGAs, such as <a class="contact" href="https://mynameismwd.org">Michael Dales</a> work on <a href="https://github.com/quantifyearth/yirgacheffe">Yirgacheffe</a> or <a class="contact" href="https://github.com/omarathon">Omar Tanner</a>'s work on in-memory <a href="https://anil.recoil.org/ideas/compressive-geospatial">compressive computation</a>. The other angle is to work on the low-level API to programming the FPGAs, to get away from <a href="https://danluu.com/why-hardware-development-is-hard/">Verilog</a> and program in our favourite high-level language...OCaml! <a class="contact" href="https://kcsrk.info">KC Sivaramakrishnan</a> and I have started making a list of resources for programming FPGAs in OCaml for our own education.</p><p>HardCaml was originally a side project by <a href="https://www.ujamjar.com">Andy Ray</a>. He gave a great presentation about it at <a href="https://www.ujamjar.com/presentations/orconf2015.html">ORConf 2015</a>. Later on in the project's lifecycle, he moved it to being maintained by <a href="https://janestreet.com">Jane Street</a>, where is used in production and is <a href="https://github.com/janestreet/hardcaml">open source</a>. The first two resources to learn about HardCaml are to listen to the <a href="https://www.youtube.com/watch?v=GJX5VbKvh90">Signals and Threads episode with Andy</a>, and then to <a href="https://arxiv.org/pdf/2312.15035">read the 2023 paper</a>:</p>···<li>My colleague <a href="https://albert.rierol.net/">Albert Cordona</a> works on analysing the <a href="https://www.science.org/doi/full/10.1126/science.add9330">connectomes of insect brains</a> (among other brains), which involves a lot of image processing over vast datasets as well. I <a href="https://amok.recoil.org/@avsm/113962390567495016">pointed</a> him at an <a href="https://hackaday.io/project/27550-the-hobbyists-guide-to-fpgas">FPGA overview</a>; any other good beginner &quot;FPGA for programmers&quot; ones I could also use?</li>-<p>Thanks also to <a href="https://ujamjar.com">Andy Ray</a> and <a class="contact" href="https://anil.recoil.org/">Andrew W. Moore</a> for feedback and corrections to this post.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>`just` OCaml</title><link href="https://mort.io/blog/just-ocaml/" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/just-ocaml/</id><summary type="html"><p>In similar vein to a <a href="https://mort.io/blog/just-latex">recent post</a>, I have also started using<a href="https://just.systems/"><code>just</code></a> when I periodically need to rebuild my<a href="https://ocaml.org/">OCaml</a> tool<sup class="footnote-reference"><a href="https://mort.io/blog/just-ocaml/#1">1</a></sup> <a href="https://github.com/mor1/ocal"><code>ocal</code></a>. So···</span><span class="z-source z-just"><span class="z-meta z-function z-just"><span class="z-entity z-name z-function z-just">release</span></span>:-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Reverse `find`</title><link href="https://mort.io/blog/reverse-find/" rel="alternate"></link><published>2025-02-05T00:00:00Z</published><updated>2025-02-05T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/reverse-find/</id><summary type="html"><p>In the last few days I discovered I needed to search back up the filesystem from<code>$CWD</code> to find the first occurence of a file (specifically, a <code>Justfile</code> but<a href="https://www.gnu.org/software/bash/"><code>bash</code></a> shell function; here ’tis:</p>···<p>Invoke as (e.g.,) <code>rf Justfile</code>. Alternatively, as a one-liner:</p><pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-variable z-other z-readwrite z-assignment z-shell">F</span><span class="z-keyword z-operator z-assignment z-shell">=</span><span class="z-string z-unquoted z-shell">Justfile</span><span class="z-meta z-function-call z-shell"></span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-keyword z-control z-loop z-while z-shell">while</span> <span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">!</span></span><span class="z-meta z-function-call z-arguments z-shell"> eza<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>l</span> <span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-punctuation z-section z-expansion z-parameter z-begin z-shell">{</span></span><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-variable z-other z-readwrite z-shell">D</span></span><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-keyword z-operator z-assignment z-shell">:=</span></span><span class="z-meta z-group z-expansion z-parameter z-shell">.</span><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-section z-expansion z-parameter z-end z-shell">}</span></span>/<span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">F</span></span></span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-keyword z-control z-loop z-do z-shell">do</span> <span class="z-support z-function z-test z-begin z-shell">[</span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-string z-quoted z-double z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">&quot;</span><span class="z-meta z-group z-expansion z-command z-parens z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-punctuation z-section z-parens z-begin z-shell">(</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">realpath</span></span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">D</span></span>/<span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">F</span></span></span><span class="z-punctuation z-section z-parens z-end z-shell">)</span></span><span class="z-punctuation z-definition z-string z-end z-shell">&quot;</span></span> <span class="z-keyword z-operator z-logical z-shell">==</span> <span class="z-string z-quoted z-double z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">&quot;</span>/<span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">F</span></span><span class="z-punctuation z-definition z-string z-end z-shell">&quot;</span></span> <span class="z-support z-function z-test z-end z-shell">]</span></span> <span class="z-keyword z-operator z-logical z-and z-shell">&amp;&amp;</span> <span class="z-keyword z-control z-flow z-break z-shell">break</span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-variable z-other z-readwrite z-assignment z-shell">D</span><span class="z-keyword z-operator z-assignment z-shell">=</span><span class="z-string z-unquoted z-shell"><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">D</span></span>/..</span><span class="z-meta z-function-call z-shell"></span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-keyword z-control z-loop z-end z-shell">done</span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-meta z-function-call z-shell"><span class="z-support z-function z-unset z-shell">unset</span></span><span class="z-meta z-function-call z-arguments z-shell"> D</span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Fake papers abound in the literature</title><link href="https://anil.recoil.org/notes/ai-contamination-of-papers" rel="alternate"></link><published>2025-02-04T00:00:00Z</published><updated>2025-02-04T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ai-contamination-of-papers</id><summary type="html"><p><a class="contact" href="https://toao.com">Sadiq Jaffer</a> sent along this <a href="https://theconversation.com/fake-papers-are-contaminating-the-worlds-scientific-literature-fueling-a-corrupt-industry-and-slowing-legitimate-lifesaving-medical-research-246224">piece in The Conversation</a> last week about the remarkable number of academic papers that are now AI generated. The numbers of these papers are probably underestimated:</p><p>These papers are absorbed into the worldwide library of research faster than they can be weeded out. About 119,000 scholarly journal articles and conference papers are published globally every week, or more than 6 million a year. Publishers estimate that, at most journals, about 2% of the papers submitted – but not necessarily published – are likely fake, although this number can be much higher at some publications.<cite>-- Frederik Joelving et al, <a href="https://theconversation.com/fake-papers-are-contaminating-the-worlds-scientific-literature-fueling-a-corrupt-industry-and-slowing-legitimate-lifesaving-medical-research-246224">The Conversation</a></cite></p><p>What caught my eye in this article is their development of the <a href="https://asistdl.onlinelibrary.wiley.com/doi/10.1002/asi.24495">Problematic Paper Screener</a>, which the good folks at <a href="https://en.wikipedia.org/wiki/Retraction_Watch">Retraction Watch</a> developed. It works with high precision to detect papers issued by grammar-based generators. They noted in <a href="https://theconversation.com/problematic-paper-screener-trawling-for-fraud-in-the-scientific-literature-246317">another article</a> that over 764,000 articles cited papers that could be unreliable, further illustrating the creeping unreliability. <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and I are planning to run this over our <a href="https://anil.recoil.org/projects/ce">growing paper corpus</a>, but I can't find the source code to their system, just <a href="https://dbrech.irit.fr/pls/apex/f?p=9999:1::::::">the hosted version</a>.</p><p>Meanwhile, datasets are also under similar threat of causing <a href="https://www.nature.com/articles/s41586-024-07566-y">recursive model collapse</a>. The <a href="https://github.com/rspeer/wordfreq">Wordfreq</a> team announced in September 2024 that they would <a href="https://github.com/rspeer/wordfreq/blob/master/SUNSET.md">discontinue</a> updating their corpus because generative AI has polluted the data and information that used to be free has became expensive. <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> also noted the related problem of dataset versioning becoming unreliable across science in &quot;<a href="https://anil.recoil.org/papers/2024-uncertainty-cs">Uncertainty at scale: how CS hinders climate research</a>&quot;, but for different reasons -- large datasets are inherently difficult to version and reproduce (it's quite hard to share a terabyte of data over the Internet easily, even in this day and age).</p>-<p>Another big development this week was the release of <a href="https://openai.com/index/introducing-deep-research/">OpenAI's Deep Research</a> feature, which goes off and really mines a literature corpus for information. I've grudgingly updated to their expensive <a href="https://openai.com/index/introducing-chatgpt-pro/">Pro</a> to try this out and will report my findings in a future post. The ability to generate papers has moved well beyond just the grammar generators that the Problem Paper Screener can filter out, so this arms race is unlikely to end well if we're pinning our hopes on detecting AI-generated papers. The current publish-or-perish model has already died; at least our Cambridge <a href="https://www.acp.hr.admin.cam.ac.uk/acp-overview/acp-key-principles">promotion process</a> is more enlightened than &quot;just&quot; looking at paper counts!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 3rd February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-03/" rel="alternate"></link><published>2025-02-03T09:07:12Z</published><updated>2025-02-03T09:07:12Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-03/</id><summary type="html"><h1>Last week</h1><p>I finally got time to sit down and catch up with trying to recreate <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR</a>, the IUCN's Species Threat Abatement and Restoration metric, which is similar to, but different from, the LIFE metric that I work on. Before Christmas I'd been working with <a href="https://www.researchgate.net/profile/Francesca-Ridley">Chess Ridley</a> who maintains and runs the current STAR pipeline for the IUCN, trying to match up my species selection process with hers. Since then I'd found out some more nuances to both the IUCN redlist data and to my ability to write SQL that queries JSON fields in Postgres, and I'm now sitting closer to Chess's results, but not quite there yet:</p>···<p>I'm still doing some spelunking on individual species in the species data for the LIFE maps, trying to understand why species are represented the way they are. I'll be doing some more of that, and talking later in the week with <a href="https://mail.cambridgeconservation.org/about/people/daniele-baisero/">Daniele Baisero</a> from the <a href="https://www.keybiodiversityareas.org/working-with-kbas/programme/secretariat">KBA Secretariat</a> on their scoping tool, as they would like to include LIFE layers in that, and I think it has a nice UI that would be good for making inspection of the LIFE maps easier for people who aren't familiar with the code.</p><p>I did some little bits of tidying with Yirgacheffe, but did not gat around to making the Metal and CUDA backends swappable.</p>-<p>I also want to write a small how to, using perhaps the AoH data or a species richness map as an example workflow. For that though I need to work out if blogging counts as publishing, as the IUCN data I use for things like this is open access, but requires permission for publishing.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Keyboard</title><link href="https://ryan.freumh.org/keyboard.html" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/keyboard.html</id><summary type="html"><article>···<p><span id="para-3">The Moonlander uses the open-source <a href="https://qmk.fm/">QMK Firmware</a>, and you can find myconfiguration <a href="https://github.com/RyanGibb/qmk_userspace/blob/main/keyboards/zsa/moonlander/keymaps/ryangibb/keymap.c">here</a>.</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Firefox</title><link href="https://ryan.freumh.org/firefox.html" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/firefox.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 3 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-03.html" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-02-03.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Satellites are getting too good for forest carbon?</title><link href="https://anil.recoil.org/notes/forests-spatial-resolution" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/forests-spatial-resolution</id><summary type="html"><p>There's a <a href="https://www.science.org/doi/10.1126/science.adt6811">letter in Science</a> today from a bunch of well known remote sensing researchers that make the unusual point that modern satellite resolution is getting <em>too</em> good to be accurate for forest carbon estimation.</p><p>Many new satellites can resolve fine features on the landscape, and even some individual trees outside forests, but this resolution (0.3-5m) is too high for mapping forest carbon. Forest carbon has a natural resolution constraint: the size of an individual tree. To create these maps, tree data from the ground are required because there is no direct measure of tree carbon nor any way to accurately divide trees into smaller components from space.···<p>With the view of halting the further deforestation of carbon-dense old-growth forests and generating the necessary knowledge to better manage its forests into the future, in 2016 the Sabah state government commissioned CAO to deliver a high-resolution ALS-based carbon map of the entire state. The regional carbon model we develop here underpins this initiative [...]<cite>-- <a href="https://tforces.net/upload/publication-store/2018/Jucker_et_al_2018_Borneo_carbon_Biogeosciences-15-3811-2018.pdf">Tommaso Jucker, David Coomes et al</a>, Estimating aboveground carbon density and its uncertainty in Borneo’s structurally complex tropical forests using airborne laser scanning</cite></p>-<p><a class="contact" href="https://mynameismwd.org">Michael Dales</a> and <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a> are just starting to refresh our <a href="https://anil.recoil.org/papers/2023-pact-tmf">PACT methodology spec</a>, so this yet another timely warning to not race ahead with the <a href="https://anil.recoil.org/projects/rsn">latest satellite data</a> without careful consideration of what it is we are actually measuring (in our case, forest carbon for <a href="https://anil.recoil.org/news?t=carboncredits">carboncredits</a>).</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Emacs</title><link href="https://ryan.freumh.org/emacs.html" rel="alternate"></link><published>2025-02-02T00:00:00Z</published><updated>2025-02-02T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/emacs.html</id><summary type="html"><article>···<h1 id="search-and-replace-in-project"><span class="todo TODO">TODO</span> search and replace in project</h1><p><span id="search-and-replace-in-project-para-0"><a href="https://github.com/hungyiloo/hungyi.net/blob/archive-2024/content/posts/doom-emacs-search-replace-project.org">https://github.com/hungyiloo/hungyi.net/blob/archive-2024/content/posts/doom-emacs-search-replace-project.org</a></span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Disentangling carbon credits and offsets with contributions</title><link href="https://anil.recoil.org/notes/carbon-credits-vs-offsets" rel="alternate"></link><published>2025-02-02T00:00:00Z</published><updated>2025-02-02T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/carbon-credits-vs-offsets</id><summary type="html"><p>The terms <a href="https://en.wikipedia.org/wiki/Carbon_offsets_and_credits">carbon credits and carbon offsets</a> are often used interchangeably,reading up on some <a href="https://ssir.org/articles/entry/forest-contributions-carbon-offsets">recent articles</a> that <a class="contact" href="https://en.wikipedia.org/wiki/Bhaskar_Vira">Bhaskar Vira</a> sent me which introduce a<em>third</em> term, known as <em>&quot;carbon contributions&quot;</em>. Rather than this adding confusion, I···<p>There's a nice <a href="https://www.vice.com/en/article/the-amazon-is-worth-more-money-left-standing-study-shows/">article from Vice</a> that explains the <a href="https://www.nature.com/articles/s41893-018-0175-0">paper</a> more accessibly.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-5">↩︎︎</a></span></li><li id="fn-4"><p>As an aside, I've been purchasing <a href="https://shopping.rspb.org.uk/gifts-home/home-and-kitchen/food-drink/food/gola-chocolate.html">sustainable Gola rainforest chocolate</a> from the RSPB. <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> gave me some of their truffles for Christmas and they were consumed rapidly by my family.</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-4">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>(Neo)Vim</title><link href="https://ryan.freumh.org/vim.html" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/vim.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using computational SSDs for vector databases</title><link href="https://anil.recoil.org/ideas/computational-storage-for-vector-dbs" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/computational-storage-for-vector-dbs</id><summary type="html"><h1>Using computational SSDs for vector databases</h1><p>This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>Large <a href="https://en.wikipedia.org/wiki/Foundation_model">pre-trained models</a> can be used to embed media/documents into concise vector representations with the property that vectors that are &quot;close&quot; to each other are semantically related. <a href="https://en.wikipedia.org/wiki/Nearest_neighbor_search">ANN</a> (Approximate Nearest Neighbour) search on these embeddings is used heavily already in <a href="https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/">RAG</a> systems for LLMs or search-by-example for satellite imagery.</p><p>Right now, most ANN databases almost exclusively use memory-resident indexes to accelerate this searching. This is a showstopper for larger datasets, such as the terabytes of PDFs we have for our <a href="https://anil.recoil.org/projects/ce">big evidence synthesis</a> project, each of which generates dozens of embeddings. For global satellite datasets for <a href="https://anil.recoil.org/projects/rsn">remote sensing of nature</a> at 10m scale this is easily petabytes per year (the raw data here would need to come from tape drives).</p>···<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li><li id="fn-2">-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Deepdive into Deepseek advances</title><link href="https://anil.recoil.org/notes/deepseek-r1-advances" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/deepseek-r1-advances</id><summary type="html"><p><a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> posted a link to this excellent deepdive by <a href="https://www.linkedin.com/in/prasadraje/">Prasad Raje</a> of Udemy into the advances that<a href="https://deepseek.com">DeepSeek</a> R1 has made from a perspective of the core···<li>Multi-token prediction (MTP): [...] you compute more than 1 token and send the aggregate error to back propagate. The intuition is that you get more changes made to the model weights in each training step, thus reducing the total training steps needed [...] Deepseek took this idea further, added innovations of their own (Sequential vs parallel MTP) and used this to reduce training time.<cite> -- <a href="https://www.linkedin.com/pulse/deepdive-deepseek-prasad-raje-jakqc">Prasad Raje</a></li>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Affordable digitisation of insect collections using photogrammetry</title><link href="https://anil.recoil.org/ideas/digitisation-of-insects" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/digitisation-of-insects</id><summary type="html"><h1>Affordable digitisation of insect collections using photogrammetry</h1><p>This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://www.cambridgephilosophicalsociety.org/funding/henslow-fellows/dr-tiffany-ki">Tiffany Ki</a> and <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-edgar-turner">Edgar Turner</a>.</p><p>Insects dominate animal biodiversity and are sometimes called &quot;<a href="https://faculty.washington.edu/timbillo/Readings%20and%20documents/ABRIDGED%20READINGS%20for%20PERU/Wilson_1987_Little_things_that_run.pdf">the little things that run the world</a>&quot;. They play a disproportionate role in ecosystem functioning, are highly sensitive to environmental change and often considered to be early indicators of responses in other taxa. There is widespread concern about global insect declines<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup> yet the evidence behind such declines is highly biassed towards the Global North and much is drawn from short-term biodiversity datasets<sup><a class="fn-label" href="https://anil.recoil.org/#fn-2" id="ref-1-fn-2">[2]</a></sup> <sup><a class="fn-label" href="https://anil.recoil.org/#fn-3" id="ref-1-fn-3">[3]</a></sup>.</p><p>The <a href="https://www.museum.zoo.cam.ac.uk/insects">Insect Collection</a> at the University Museum of Zoology, Cambridge holds over 1.2 million specimens. These include specimens collected from the early 19th century to the present day. Most specimens remain undocumented and unavailable for analysis. However, they contain data that are critical to understanding long-term species and community responses to anthropogenic change, and vital to evaluating whether short-term declines are representative of longer-term trends<sup><a class="fn-label" href="https://anil.recoil.org/#fn-4" id="ref-1-fn-4">[4]</a></sup> <sup><a class="fn-label" href="https://anil.recoil.org/#fn-5" id="ref-1-fn-5">[5]</a></sup>. As such, unlocking these insect collections is of paramount importance, and the large-scale nature of these collections necessitates the development of an efficient and effective digitisation process.</p>···<p>Kharouba et al. (2018) <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2017.0405">Using insect natural history collections to study global change impacts: challenges and opportunities</a>. Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences, 374, 20170405. DOI: 10.1098/rstb.2017.0405</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-4">↩︎︎</a></span></li><li id="fn-5"><p>Meineke et al. (2018) <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2017.0386">Biological collections for understanding biodiversity in the Anthropocene</a>. Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences, 374, 20170386. DOI: 10.1098/rstb.2017.0386</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-5">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>How to publish custom Homebrew taps for OCaml</title><link href="https://anil.recoil.org/notes/custom-homebrew-taps" rel="alternate"></link><published>2025-01-31T00:00:00Z</published><updated>2025-01-31T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/custom-homebrew-taps</id><summary type="html"><p>Now that I've <a href="https://anil.recoil.org/notes/bushel-lives">switched</a> to a new website, I'm working on open-sourcing its components. I've got a lot of small OCaml scripts that are all work-in-progress, and so not quite suitable to be published to the <a href="https://github.com/ocaml/opam-repository">central opam-repository</a> but I still need be able to run them conveniently on my own <a href="https://anil.recoil.org/">self-hosted</a> infrastructure.</p><p>I mainly use a variety of macOS and Linux hosts<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup> and I want a workflow as simple as &quot;<code>brew install avsm/ocaml/srcsetter</code>&quot; and have it install a working binary version of my CLI utility. In this case, it's <a href="https://github.com/avsm/srcsetter">srcsetter</a>, a simple tool I knocked up to generate the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Responsive_images">responsive images</a> on this website. Luckily, Homebrew has made this <em>really</em> easy for us! They have a <a href="https://docs.brew.sh/BrewTestBot">BrewTestBot</a> that integrates with GitHub Actions to automate the compilation of binary packages for us, all from a convenient PR-like workflow.</p><p>First, we need to set up a GitHub Homebrew &quot;tap&quot; repository. Mine is <a href="https://github.com/avsm/homebrew-ocaml">avsm/homebrew-ocaml</a> which allows for the tap to be referred to as <code>avsm/ocaml</code> (Homebrew special-cases these to expand to the full GitHub repository). We then add in a couple of GitHub Actions to activate the testbot:</p>···<p>Let's leave <a href="https://anil.recoil.org/">OpenBSD</a> support to another day!</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>PhD viva, UK style</title><link href="https://mort.io/blog/phd-viva/" rel="alternate"></link><published>2025-01-31T00:00:00Z</published><updated>2025-01-31T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/phd-viva/</id><summary type="html"><p>Having recently, happily, had several PhD students completing in short order,···-examiner for doing the viva plus reasonable expenses.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Position paper on scientifically credible carbon credits</title><link href="https://anil.recoil.org/notes/credible-credit-principles" rel="alternate"></link><published>2025-01-30T00:00:00Z</published><updated>2025-01-30T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/credible-credit-principles</id><summary type="html"><p>My colleagues <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a> and <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a> lead the publication of a comprehensive<a href="https://www.cambridge.org/engage/coe/article-details/679385946dde43c9082f7009">report</a> of the steps the voluntary carbon market needs to taketo restore its scientific credibility, with input from many of us in <a href="https://anil.recoil.org/projects/4c">4C</a> and beyond.</p>···<li>integrating DMRV methods into carbon and biodiversity accounting standards to reduce the financial and administrative burdens on nature-based projects and the local communities participating in or affected by them.</li>-<p>This paper represents three years of hard work from the team on trying to blend remote sensing with carbon quantification. For more reading on the topic, you may also wish to browse the full <a href="https://4c.cst.cam.ac.uk/publications">4C publication list</a> for the firehose of activity from the centre.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Arise Bushel, my sixth generation oxidised website</title><link href="https://anil.recoil.org/notes/bushel-lives" rel="alternate"></link><published>2025-01-29T00:00:00Z</published><updated>2025-01-29T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/bushel-lives</id><summary type="html"><p>This website has been through quite a few iterations over the years. The first version in 1998 was written in Perl and hosted on <a href="https://anil.recoil.org/">OpenBSD</a>; the second was rewritten in 2000 when I <a href="https://anil.recoil.org/notes/commit-access-to-php">got commit access to PHP</a>; the third rewrite became a hybrid OCaml/PHP/Perl special in 2004 in <a href="https://en.wikipedia.org/wiki/Blosxom">Blosxom</a>; then the forth rewrite around 2013 got turned into a <a href="https://anil.recoil.org/projects/unikernels">unikernel</a> in MirageOS; then the <a href="https://web.archive.org/web/20220118200046/https://anil.recoil.org/">fifth</a> in 2019 then transitioned to an OCaml static site generator hosted on a prerelease <a href="https://github.com/avsm/eeww">multicore OCaml webserver</a>. So the sixth generation now needs something to continue the grand <a href="https://en.wikipedia.org/wiki/Rube_Goldberg_machine">Rube Goldberg</a> tradition of helping me learn the latest and greatest in systems technology.</p><p>And so here it is! The site is now written in a bleeding-edge unreleased variant of OCaml with extensions based around <a href="https://blog.janestreet.com/icfp-2024-index/">Rust-like type system features</a> activated, including rather exciting <a href="https://popl25.sigplan.org/details/POPL-2025-popl-research-papers/23/Data-Race-Freedom-la-Mode">data-race freedom</a> work that just won a best paper award at POPL 2025. It's normally difficult to work on continuously moving compilers, but Diana Kalinichenko did a tremendous amount of work into making it usable with opam out of the box, and this post documents the journey to getting this website live.</p><p>Firstly, we did some groundwork a few months ago by adding support into the opam-repository for <a href="https://github.com/ocaml/opam-repository/pull/26471">bootstrap versions</a> of dune, menhir and ocamlfind. These are used to build the Jane Street version of the OCaml compiler, which is published as an <a href="https://github.com/janestreet/opam-repository/tree/with-extensions">opam-repository#with-extensions</a>.</p>···-dive into some region extensions and see how far I get!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>AT Protocol and an IR for Wikis</title><link href="https://patrick.sirref.org/weekly-2025-01-27/" rel="alternate"></link><published>2025-01-27T00:00:00Z</published><updated>2025-01-27T00:00:00Z</updated><author><name>Unknown</name></author><id>https://patrick.sirref.org/weekly-2025-01-27/</id><summary type="html"><p><p>This week I've been diving into the <a href="https://atproto.com/">AT Protocol</a>. </p>···<p>I was happy to find the <a href="https://www.opentech.fund/fellowships/icfp/">Information Controls Fellowship Program</a>. </p><p>The Information Controls Fellowship Program (ICFP) cultivates research, outputs, and creative collaboration on topics related to repressive internet censorship and surveillance. </p>-</blockquote></summary><category term="Weeklies"></category></entry><entry><title>Mon 27 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-27.html" rel="alternate"></link><published>2025-01-27T00:00:00Z</published><updated>2025-01-27T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-01-27.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Fontsizing in LaTeX</title><link href="https://mort.io/blog/fontsizing/" rel="alternate"></link><published>2025-01-24T00:00:00Z</published><updated>2025-01-24T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/fontsizing/</id><summary type="html"><p>I recently had colleagues hit an issue that I have hit myself in the past, and···<a href="https://www.luatex.org/"><code>luatex</code></a> backend driver instead by passing<code>-lualatex</code> to <a href="https://mgeier.github.io/latexmk.html"><code>latexmk</code></a> and that has-worked fine so far</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Updated preprint on LLMs for evidence-based decision support</title><link href="https://anil.recoil.org/news/2024-ce-llm-2" rel="alternate"></link><published>2025-01-23T00:00:00Z</published><updated>2025-01-23T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-ce-llm-2</id><summary type="html"><p>We have just updated our <a href="https://anil.recoil.org/papers/2024-ce-llm">preprint</a> on using LLMs for evidence decision support with more evaluation results and corrections from peer review.</p><p>Our findings suggest that, with careful domain-specific design, LLMs could potentially be powerful tools for enabling expert-level use of evidence syntheses and databases. However, general LLMs used &quot;out-of-the-box&quot; are likely to perform poorly and misinform decision-makers. By establishing that LLMs exhibit comparable performance with human synthesis experts on providing restricted responses to queries of evidence syntheses and databases, future work can build on our approach to quantify LLM performance in providing open-ended responses.</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Forester, ICFP, Wikis</title><link href="https://patrick.sirref.org/weekly-2025-01-20/" rel="alternate"></link><published>2025-01-20T00:00:00Z</published><updated>2025-01-20T00:00:00Z</updated><author><name>Unknown</name></author><id>https://patrick.sirref.org/weekly-2025-01-20/</id><summary type="html"><p>This week was my first full week back from the break and I found it challenging trying to get back into what I had been working on previously. </p>···-<p>I met with most of my <a href="https://patrick.sirref.org/part-ii-2024/">Part II</a> students this week which was nice to catch up and see how their projects are going. I also started marking work for my first year students who are at the <em>induction</em> part of their <a href="https://patrick.sirref.org/discrete-maths/">Discrete Maths</a> course. </p></summary><category term="Weeklies"></category></entry><entry><title>Mon 20 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-20.html" rel="alternate"></link><published>2025-01-20T00:00:00Z</published><updated>2025-01-20T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-01-20.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>`just` LaTeX it!</title><link href="https://mort.io/blog/just-latex/" rel="alternate"></link><published>2025-01-18T00:00:00Z</published><updated>2025-01-18T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/just-latex/</id><summary type="html"><p>I have recently become a fan of <a href="https://just.systems/"><code>just</code></a> as a replacement for the venerable<a href="https://www.gnu.org/software/make/manual/make.html"><code>make</code></a>. I find that nowadays I rarely need the built-in dependency rulesthat <a href="https://www.gnu.org/software/make/manual/make.html"><code>make</code></a> provides. Perhaps more radically, I also rarely need to write myown as the prevelance of format-specific build tools such as <a href="https://doc.rust-lang.org/stable/cargo/"><code>cargo</code></a>,···<pre class="language-just z-code"><code class="language-just"><span class="z-source z-just"><span class="z-comment z-line z-number-sign z-just"><span class="z-punctuation z-definition z-comment z-begin z-just"># </span>watch a file, rebuilding when saved</span></span><span class="z-source z-just"><span class="z-meta z-function z-just"><span class="z-entity z-name z-function z-just">watch</span></span> tgt:</span><span class="z-source z-just"> while inotifywait -e close_write <span class="z-meta z-interpolation z-just"><span class="z-punctuation z-section z-interpolation z-begin z-just">{{</span><span class="z-variable z-other z-just">tgt</span><span class="z-punctuation z-section z-interpolation z-end z-just">}}</span></span>* ; do just pdf <span class="z-meta z-interpolation z-just"><span class="z-punctuation z-section z-interpolation z-begin z-just">{{</span><span class="z-variable z-other z-just">tgt</span><span class="z-punctuation z-section z-interpolation z-end z-just">}}</span></span> ; done-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 13 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-13.html" rel="alternate"></link><published>2025-01-13T00:00:00Z</published><updated>2025-01-13T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-01-13.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>LIFE metric published in Royal Society Phil Trans B</title><link href="https://anil.recoil.org/news/2024-life-3" rel="alternate"></link><published>2025-01-09T00:00:00Z</published><updated>2025-01-09T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-life-3</id><summary type="html"><p>After some years of hard work, our <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a> biodiversity metric was published today in a <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327">special issue</a> of the Royal Society Philosophical Transactions B! The idea behind LIFE is that although human-driven habitat loss is known to be the greatest cause of the <a href="https://www.unep.org/facts-about-nature-crisis">biodiversity crisis</a>, we do not yet have robust spatially explicit metrics that <em>quantify</em> the relative impacts of human actions on species extinctions. And that's what LIFE provides: a way to compare the relative impacts of some landuse anywhere in the world, in a manner that is globally applicable. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-life-3">409 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 6 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-06.html" rel="alternate"></link><published>2025-01-06T00:00:00Z</published><updated>2025-01-06T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2025-01-06.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Introducing `bibtox`</title><link href="https://mort.io/blog/bibtox/" rel="alternate"></link><published>2025-01-03T00:00:00Z</published><updated>2025-01-03T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/bibtox/</id><summary type="html"><p>After some time using various tools and scripts to format and sort my files ofBibTeX/BibLaTeX entries, I finally gave up back in March and <a href="https://github.com/mor1/bibtox">wrote one myselfcombination of server-side <a href="https://github.com/mor1/bibtox/blob/83eda34bc9e79bd5251b1ae9623b5e905532c599/bib2json.py">Python</a> and in-page <a href="https://github.com/mor1/bibtox/blob/83eda34bc9e79bd5251b1ae9623b5e905532c599/papers.coffee">CoffeeScript</a>, plus a···<p><a href="https://github.com/mor1/bibtox/issues">Issues</a> or <a href="https://github.com/mor1/bibtox/pulls">pull-requests</a> welcome!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 30 Dec 2024</title><link href="https://ryan.freumh.org/2024-12-30.html" rel="alternate"></link><published>2024-12-30T00:00:00Z</published><updated>2024-12-30T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-12-30.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Retreat from TUM</title><link href="https://mort.io/blog/tum-retreat/" rel="alternate"></link><published>2024-12-18T00:00:00Z</published><updated>2024-12-18T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/tum-retreat/</id><summary type="html"><p>Ok, ok, I exaggerate – it’s not really that far. But any time I have to set the<p><a href="https://www.ce.cit.tum.de/cm/research-group/">TU Munchen</a> host an <a href="https://www.ce.cit.tum.de/cm/events/mir3/">annualretreat</a>, and thanks to <a href="https://www.ce.cit.tum.de/cm/research-group/joerg-ott/">Prof. Joerg···but the bus couldn’t! And then the retreat happened – but you can <a href="https://www.ce.cit.tum.de/cm/events/mir3/mir3-2024-10/">read about-that elsewhere</a> :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 16 Dec 2024</title><link href="https://ryan.freumh.org/2024-12-16.html" rel="alternate"></link><published>2024-12-16T00:00:00Z</published><updated>2024-12-16T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-12-16.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>The Partially Dynamic Web</title><link href="https://digitalflapjack.com/blog/the-partially-dynamic-web/" rel="alternate"></link><published>2024-12-08T11:59:48Z</published><updated>2024-12-08T11:59:48Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/the-partially-dynamic-web/</id><summary type="html"><h1>Background</h1><p>I have three websites (this one, my <a href="https://mynameismwd.org/">personal site</a>, and one for <a href="https://mwdales-guitars.uk/">my luthiery endeavours</a>), and despite each starting out with a different technology stack, for the last few years I’d migrated them all to the <a href="https://gohugo.io">Hugo static site generator</a>, as a way of making it easier for me to mess around with. Without a fixed database, I could more easily readily structure the content as I wanted it, I had more freedom over templating, and ultimately it’s less resource intensive to compile the site occasionally and just serve static files than keep dynamic infrastructure running for what is a set of low traffic websites. At least in theory, we’ll come back to this last point.</p><p>Like most static site generators, Hugo uses a system called <a href="https://gohugo.io/content-management/front-matter/">Front matter</a>, where you store each page as a <a href="https://en.wikipedia.org/wiki/Markdown">markdown file</a> of content, and some <a href="https://en.wikipedia.org/wiki/YAML">YAML</a> at the top of that file to store metadata, such as page title and publication date, which isn’t something markdown supports. With these two parts Hugo can generate your website based on where files are in directories, and with the appropriate bits from the front matter. Hugo will use a template system to turn your markdown into HTML files, roughly following the structure of the folders you store the markdown files in.</p><p>The templates for my sites I’d made by hand myself, which I think is a key part to unlocking the power of Hugo. Because not only can you decide how your markdown looks from your template, but you can also query the front matter, and so change how your page looks based on the metadata. I heavily used this feature, using it a bit like a database entry for each page. This let me add a synopsis to each page, or a title image with alt-text that becomes the thumbnail on the list views. For photos I store all the EXIF data in there too.</p>···<p>I’m using the <a href="https://aantron.github.io/dream/">Dream</a> library for <a href="https//ocaml.org/">OCaml</a>, which has both built in routing and templating. I made sure to keep the URL layout that Hugo used as best I could, so in theory the transition shouldn’t be noticed by most people, as all the content remains at the same URL it was.</p><p>Using a functional language for this kind of work actually maps very nicely: all I’m doing is taking data in one format and presenting it in another, so functional transforms are what I need. The way the website is stored on disk for a static site generator means I'm mostly doing a translation of that structure into the URIs for the website, so I was starting from a good place for this project.</p><p>Thanks to Hugo encouraging me to use shortcodes for all resources in a page (I never used the markdown image tags), it was low effort to ensure all resources in a page have their own URL to render them on demand, as I don’t ever need to parse the markdown myself beyond pulling out shortcodes. For images I’m just using <a href="https://gallium.inria.fr/camlimages/">Camlimages</a> which is quite an old library and doesn’t support all the image formats I have acquired over 20 plus years, but it’s enough to get started with. Performance wise, this will be a regression, as images are resized and stored in a small cache the first time they’re viewed, but given most people consume my site via RSS, when I add a new page and look at it myself to check it works, it’ll mean for most folk they don’t see that.</p>-<p>The aim so far has just been to get as close to the Hugo version as I can without changing the data on disk. What I'm looking forward to doing now I've switched is making changes to the on disk representation to let me simplify the OCaml code, and add some new fun features.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Horizon scan on AI and conservation published</title><link href="https://anil.recoil.org/news/2024-ai-conhorizon-1" rel="alternate"></link><published>2024-12-05T00:00:00Z</published><updated>2024-12-05T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-ai-conhorizon-1</id><summary type="html"><p>Back in July 2024, a large group of conservation and computer scientists got together in the <a href="https://conservation.cam.ac.uk">CCI</a> to prioritise the storm of AI-related projects that have been kicking off around the world. Our key goal was to harness AI to accelerate the positive impact of conservation efforts, while minimising harm caused through either the direct or indirect use of AI technologies.</p><p>The first horizon scan resulting from this has just been published in Trends in Ecology and Evolution. If you're looking for a gentle introduction to some of the terms in AI from a non-experts perspective, the first section does a good job of defining a glossary as well. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-ai-conhorizon-1">118 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-ai-conhorizon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 2 Dec 2024</title><link href="https://ryan.freumh.org/2024-12-02.html" rel="alternate"></link><published>2024-12-02T00:00:00Z</published><updated>2024-12-02T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-12-02.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Towards verifiable, privacy-preserving carbon emissions claims</title><link href="https://anil.recoil.org/news/2024-loco-emissions-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-loco-emissions-1</id><summary type="html"><p>Customers of online services may want to take carbon emissions into account···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-emissions.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Towards a frugal userspace for Linux</title><link href="https://anil.recoil.org/news/2024-loco-shark-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-loco-shark-1</id><summary type="html"><p>All the work we've been doing on biodiversity (such as <a href="https://anil.recoil.org/projects/life">LIFE</a>) comes at···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-shark.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Prototyping carbon-aware domain name resolution</title><link href="https://anil.recoil.org/news/2024-loco-carbonres-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-loco-carbonres-1</id><summary type="html"><p><a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a> and I have been thinking about how the current Internet architecture fails to treat the carbon emissionsassociated with networked services as a first-class metric. So when the <a href="https://locos.codeberg.page/loco2024/">LOCO</a> conference came up, we tried extending the DNS with load balancing techniques to consider the carbon cost of scheduling decisions. A next step was then to build a custom <a href="https://github.com/RyanGibb/eon">DNS server written in OCaml</a> to actively wake machines running networked services as a side effect of the name···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-carbonres.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cooperative Sensor Networks for Long-Term Biodiversity Monitoring</title><link href="https://anil.recoil.org/news/2024-loco-terracorder-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-loco-terracorder-1</id><summary type="html"><p><a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> and I have been having great fun designing embedded systems forcooperative biodiversity monitoring. Josh presented our work over at <a href="https://www.sicsa.ac.uk/loco/loco2024/">LOCO···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-terracorder.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 18 Nov 2024</title><link href="https://ryan.freumh.org/2024-11-18.html" rel="alternate"></link><published>2024-11-18T00:00:00Z</published><updated>2024-11-18T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-11-18.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Royal Society and DeepMind host AI for Science Forum</title><link href="https://anil.recoil.org/notes/ai-for-science-2024" rel="alternate"></link><published>2024-11-18T00:00:00Z</published><updated>2024-11-18T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ai-for-science-2024</id><summary type="html"><p>I got invited to join the Royal Society and DeepMind to a summit on<a class="contact" href="mailto:jon.crowcroft@cl.cam.ac.uk">Jon Crowcroft</a>. This event is hot on the heels of theexcellent RS report on <a href="https://royalsociety.org/news-resources/projects/science-in-the-age-of-ai/">Science in the Age of AI</a>···<p>These conclude my live notes! Beyond the notes here, the corridor conversations were incredibly-useful for you to have put them online as well.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Published a legal perspective on high integrity forest carbon credits</title><link href="https://anil.recoil.org/news/2024-cclr-carbon-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-cclr-carbon-1</id><summary type="html"><p><a class="contact" href="https://www.cst.cam.ac.uk/people/smc70">Sophie Chapman</a> lead an <a href="https://anil.recoil.org/ideas/legal-aspects-of-credits">effort</a> to explore a novel legal framework for forest carbon credits···&nbsp; <a href="https://anil.recoil.org/papers/2024-cclr-carbon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Presented poster at Sensys on low-power biodiversity monitoring</title><link href="https://anil.recoil.org/news/2024-sensys-terracorder-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-sensys-terracorder-1</id><summary type="html"><p><a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> presented our work on biodiversity sensing over at <a href="http://sensys.acm.org/2024/">ACM Sensys 2024</a> in China. The <a href="http://sensys.acm.org/2024/demos/">full set</a> of papers and demos has a range of impressive work on sensor networks, and some that stood out to me follow. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-sensys-terracorder-1">140 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-sensys-terracorder.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Preprint on using LLMs to for evidence-based decision support</title><link href="https://anil.recoil.org/news/2024-ce-llm-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-ce-llm-1</id><summary type="html"><p>We have just uploaded a preprint on using LLMs for conservation evidence, based on our <a href="https://anil.recoil.org/projects/ce">work</a> on large-scale crawling of the academic literature. Well done in particular to <a class="contact" href="mailto:ri301@cam.ac.uk">Radhika Iyer</a> for having done the bulk of the evaluation on this as part of a very productive summer internship with us!</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Paper on scheduling for reduced tail task latencies</title><link href="https://anil.recoil.org/news/2024-socc-murmuration-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-socc-murmuration-1</id><summary type="html"><p><a class="contact" href="https://www.cl.cam.ac.uk/~sv440/">Smita Vijayakumar</a> went along to Seattle to <a href="https://acmsocc.org/2024/">SOCC 2024</a> to present her PhD research on Murmuration. This is a new scheduler for Kubernetes that allows for 15%--25% faster job completion times than the default scheduler for different job arrival characteristics in datacenters that are very busy. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-socc-murmuration-1">71 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-socc-murmuration.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building OCaml on Haiku</title><link href="https://digitalflapjack.com/blog/building-ocaml-on-haiku/" rel="alternate"></link><published>2024-10-27T09:01:41Z</published><updated>2024-10-27T09:01:41Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/building-ocaml-on-haiku/</id><summary type="html"><p>What has to be a niche of a niche post wise, I was intrigued when I spotted <a href="https://www.haiku-os.org/blog/anarchos/2024-04-09_an_odissey_to_port_compcert/">this post</a> recently that someone had built <a href="https://ocaml.org">OCaml</a> for <a href="https://www.haiku-os.org/">Haiku</a>. I'd been playing with Haiku a little recently, as I wanted to understand its file-system, and so I thought I'd have a go. I turns out it's quite simple, and although the above post does kinda tell you what you need, there's a few gaps, so this post is just recording what I did. But all credit has to go to Sylvain Kerjean for that original post which gets you most the way, this is just trying to make it easier for me to cut and paste later!</p><li>Ensure <code>/boot/home/config/non-packaged/bin</code> is on your <code>PATH</code> variable.</li>···-<p>It is however, increadably slow - my graphics library isn't very well optimised, as usually on modern hardware it doesn't need it to push old-school VGA like graphics around, but running natively on my AMD Razen machine it was really quite poor, low single-digit frames per second. In part this I assume is related to Haiku not knowing about my fancy NVIDIA graphics card, and just using the stock framebuffer driver, and in part because OCaml doesn't know about Haiku enough to build a native binary and is instead using the bytecode backend.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Mapping greener futures with planetary computing</title><link href="https://anil.recoil.org/news/a0280750-2ef0-4f5c-b138-68f7b11b4c29-1" rel="alternate"></link><published>2024-10-24T01:00:00Z</published><updated>2024-10-24T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/a0280750-2ef0-4f5c-b138-68f7b11b4c29-1</id><summary type="html"><p>I got invited by <a href="https://profiles.ucl.ac.uk/78591-serta%C3%A7-sehlikoglu">Sertaç Sehlikoglu</a> to deliver a lecture to the Masters students down at the <a href="https://www.ucl.ac.uk/bartlett/igp/">UCL Institute for Global Prosperity</a>. I talked about the recent work on <a href="https://anil.recoil.org/projects/plancomp">planetary computing</a>, with an overview of the <a href="https://anil.recoil.org/projects/life">LIFE</a> and <a href="https://anil.recoil.org/papers/2024-food-life">FOOD</a> papers.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 14 Oct 2024</title><link href="https://ryan.freumh.org/2024-10-14.html" rel="alternate"></link><published>2024-10-14T01:00:00Z</published><updated>2024-10-14T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-10-14.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>On the SOCC 2024 PC</title><link href="https://anil.recoil.org/notes/socc-pc" rel="alternate"></link><published>2024-10-08T01:00:00Z</published><updated>2024-10-08T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/socc-pc</id><summary type="html"><p>After some time away from cloud computing (due to my new focus on <a href="https://anil.recoil.org/projects/life">conservation research</a>), I served on the <a href="https://acmsocc.org/2024/">ACM SOCC 2024</a> program committee. It was quite interesting seeing the massive shift away from &quot;traditional&quot; cloud research (such as consensus protocols) towards many submissions aimed at accelerating machine learning workloads.</p>-<p>I also had a paper accepted there on <a href="https://anil.recoil.org/papers/2024-socc-murmuration">decentralised scheduling</a>, thanks to my former PhD student <a class="contact" href="https://www.cl.cam.ac.uk/~sv440/">Smita Vijayakumar</a> and her hard work on Murmuration!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 7 Oct 2024</title><link href="https://ryan.freumh.org/2024-10-07.html" rel="alternate"></link><published>2024-10-07T01:00:00Z</published><updated>2024-10-07T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-10-07.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Royal Society meeting on ecological/commercial risks</title><link href="https://anil.recoil.org/notes/rs-ecorisk-day1" rel="alternate"></link><published>2024-10-03T01:00:00Z</published><updated>2024-10-03T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/rs-ecorisk-day1</id><summary type="html"><p>I'm at the Royal Society this morning for the 2 day programme on <a href="https://royalsociety.org/science-events-and-lectures/2024/10/ecological-and-commercial-risk/">&quot;How does ecological risk related to commercial risk?&quot;</a>, and am reporting on the <a href="https://royalsociety.org/-/media/events/2024/10/ecological-risk/programme-booklet.pdf">morning session</a>. The full program is being <a href="https://www.youtube.com/watch?v=gVuxzand8RE">livestreamed</a> so please do dial in if the below notes seem interesting to you. I put this note up almost live, so any errors below are my own.<em>(Update: partial <a href="https://anil.recoil.org/#daytwo">day 2 notes</a> now available below)</em></p><p>The summit kicked off with a keynote by economist <a href="https://en.wikipedia.org/wiki/Partha_Dasgupta">Sir Partha Dasgupta</a>. The focus was on the intersection of nature and economics, covering how markets fail to account for the ecosystems that sustain them. His <a href="https://www.gov.uk/government/publications/final-report-the-economics-of-biodiversity-the-dasgupta-review">landmark report</a> covered ecosystem services, freshwater, tipping points, and physical risk, bringing to light the urgent need to reframe economic activities around the services provided by nature.</p>···<p>This concludes my rapid note taking. Do join the <a href="https://royalsociety.org/science-events-and-lectures/2024/10/ecological-and-commercial-risk/">livestream</a> and follow for the remaining day and a half if you have a spare moment!</p><p><em>Edit: upon being prodded by <a class="contact" href="https://profiles.imperial.ac.uk/a.christie">Alec Christie</a>, I've uploaded a <a href="https://notebooklm.google">NotebookLM</a> generated podcast summary of the morning. It's surprisingly entertaining, but I'm sure I'm going to regret this for some reason...</em></p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Workshopping, across the universe</title><link href="https://mort.io/blog/workshopping-edgeless/" rel="alternate"></link><published>2024-10-02T01:00:00Z</published><updated>2024-10-02T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/workshopping-edgeless/</id><summary type="html"><p>One of the pleasures of being an academic is to travel to nice places to meet<a href="https://cloudresearch.org/workshops/17th/">17th Cloud Control Workshop</a>.</p>···<p>Postcript: in case you’re curious, the title is a passing reference to <a href="https://en.wikipedia.org/wiki/Star_Trekkin%27">Star-anticipated.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 30 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-30.html" rel="alternate"></link><published>2024-09-30T01:00:00Z</published><updated>2024-09-30T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-09-30.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 23 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-23.html" rel="alternate"></link><published>2024-09-23T01:00:00Z</published><updated>2024-09-23T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-09-23.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Being on the HotNets 2024 program committee</title><link href="https://anil.recoil.org/notes/hotnets-pc-2024" rel="alternate"></link><published>2024-09-22T01:00:00Z</published><updated>2024-09-22T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/hotnets-pc-2024</id><summary type="html"><p>I was on the program committee for <a href="https://conferences.sigcomm.org/hotnets/2024/">HotNetsthoroughly enjoyable experience. The <a href="https://conferences.sigcomm.org/hotnets/2024/accepted.html">list of accepted···<a href="https://propl.dev">Programming for the Planet</a>, which is due in 2025. Morenews on that soon! In the meanwhile, get your papers into <a href="https://www.sicsa.ac.uk/loco/loco2024/">LOCO-days...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Part II Projects</title><link href="https://mort.io/blog/part-ii-projects/" rel="alternate"></link><published>2024-09-20T01:00:00Z</published><updated>2024-09-20T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/part-ii-projects/</id><summary type="html"><p>Undergraduate final-year (“Part II”) project supervision goes in fits and···-topic for another day.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 16 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-16.html" rel="alternate"></link><published>2024-09-16T01:00:00Z</published><updated>2024-09-16T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-09-16.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 9 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-09.html" rel="alternate"></link><published>2024-09-09T01:00:00Z</published><updated>2024-09-09T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-09-09.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Post-COVID19 TPC experience</title><link href="https://mort.io/blog/post-covid-tpc/" rel="alternate"></link><published>2024-09-09T01:00:00Z</published><updated>2024-09-09T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/post-covid-tpc/</id><summary type="html"><p>I do not participate in a huge number of TPCs (Technical Programme Committees)<p>I have done a few though, some big (e.g., <a href="https://www.usenix.org/conference/nsdi15">USENIX NSDI</a>, <a href="https://conferences.sigcomm.org/imc/2018/">ACM IMC</a>),···-perhaps, once I get my thoughts in order.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mitigating credit reversal risks in nature-based solutions</title><link href="https://anil.recoil.org/notes/mitigating-nbs-risk-paper" rel="alternate"></link><published>2024-09-08T01:00:00Z</published><updated>2024-09-08T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/mitigating-nbs-risk-paper</id><summary type="html"><p>Many of the questions around our recent <a href="https://anil.recoil.org/papers/2023-naturecredits">Nature Sustainability commentary on NbS credits</a> revolve aroundlatest paper published in Carbon Management on <em>&quot;<a href="https://anil.recoil.org/papers/2024-nbs-risk">Mitigating risk of credit reversal in nature-based climate solutions by optimally anticipating carbon release</a>&quot;</em> tries to address this.</p>···-our methods!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Towards security specifications for agentic AIs</title><link href="https://anil.recoil.org/news/2024-hope-bastion-1" rel="alternate"></link><published>2024-09-04T01:00:00Z</published><updated>2024-09-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-hope-bastion-1</id><summary type="html"><p>A very fun talk at <a href="https://icfp24.sigplan.org/home/hope-2024">ACM HOPE 2024</a>on some new work with <a class="contact" href="https://web.eecs.umich.edu/~comar/">Cyrus Omar</a> and <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> on how we can formally specify···&nbsp; <a href="https://anil.recoil.org/papers/2024-hope-bastion.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>New teaching page with my Computer Science courses</title><link href="https://anil.recoil.org/notes/new-teaching-page" rel="alternate"></link><published>2024-09-03T01:00:00Z</published><updated>2024-09-03T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/new-teaching-page</id><summary type="html"><p>There's a new <a href="https://anil.recoil.org/notes/teaching">teaching</a> page with my past and present courses, and links-the lectures themselves.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 2 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-02.html" rel="alternate"></link><published>2024-09-02T01:00:00Z</published><updated>2024-09-02T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-09-02.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Building species models of the planet</title><link href="https://anil.recoil.org/notes/ukri-grant-terra" rel="alternate"></link><published>2024-09-02T01:00:00Z</published><updated>2024-09-02T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ukri-grant-terra</id><summary type="html"><p>I don't normally announce funded grants (preferring to focus on outcomes), but I'm really excited by this one and couldn't resist! Myself and my colleagues <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> (from computer science), <a class="contact" href="https://coomeslab.org">David A Coomes</a> (from Plant Sciences), <a class="contact" href="https://www.zoo.cam.ac.uk/directory/andrew-balmford">Andrew Balmford</a> (from Zoology) and <a class="contact" href="https://www.cambridgeconservation.org/about/people/professor-neil-burgess/">Neil Burgess</a> (the Head of Science at <a href="https://www.unep-wcmc.org/en/the-team">UNEP-WCMC</a>) have just received a £1.2m grant from the UKRI to work on <a href="https://www.cst.cam.ac.uk/news/meet-terra-ai-aiming-map-terrestrial-life-planet">building foundation models for planetary intelligence</a>.</p><p>Now, normally a grant isn't news, but I wanted to highlight the scheme that it came under. UKRI announced an <a href="https://www.ukri.org/news/first-projects-from-ukris-new-interdisciplinary-scheme-announced/">interdisciplinary program</a> specifically for projects that don't normally get funded by just one research council. In our case, this work usually falls between the cracks of EPSRC <em>(&quot;too much nature&quot;)</em> or NERC <em>(&quot;too much engineering&quot;)</em> or STFC <em>(&quot;not enough satellites&quot;)</em>. But this interdisciplinary program expressly assembled a panel across all these areas, and collectively gave us a shot. I really hope this scheme continues to gather steam within the UKRI.</p><p>As to what we're doing? There'll be the evolution of the work described in <a href="https://anil.recoil.org/projects/rsn">Remote Sensing of Nature</a> and <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a>, with lots of domain knowledge that we're pulling together with our partners at UNEP-WCMC (especially <a class="contact" href="https://www.cambridgeconservation.org/about/people/professor-neil-burgess/">Neil Burgess</a> and <a class="contact" href="https://www.kew.org/science/our-science/people/ian-ondo">Ian Ondo</a>) on plant and animal species distributions across the globe.</p><p><figure class="image-center"><img alt="Us freezing in a Scottish August counting heather growth. There&#x27;s got to be a more scalable way of doing this, right?" class="content-image" src="https://anil.recoil.org/images/2024-clr-scotland.webp" title="Us freezing in a Scottish August counting heather growth. There&#x27;s got to be a more scalable way of doing this, right?" /><figcaption>Us freezing in a Scottish August counting heather growth. There&#x27;s got to be a more scalable way of doing this, right?</figcaption></figure>···<li><a href="https://anil.recoil.org/papers/2024-life">LIFE: A metric for mapping the impact of land-cover change on global extinctions</a> is our new metric for calculating biodiversity impacts worldwide in a comparable way. We intend to extend it to cover plant species.</li><li><a href="https://anil.recoil.org/papers/2024-food-life">Quantifying the impact of the food we eat on species extinctions</a> connects up the biodiversity metric to supply chains to figure out the environmental impact of human food consumption on the planet. We intend to increase its resolution significantly with the new foundation models derived from remote sensing data.</li><li><a href="https://anil.recoil.org/papers/2024-terracorder">Terracorder: Sense Long and Prosper</a> is a battery-efficient sensing platform I'm working on with our Imperial buddies. We need more data about our planet!</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Parallel traversal effect handlers for OCaml</title><link href="https://anil.recoil.org/ideas/effect-parallel-strategies" rel="alternate"></link><published>2024-09-01T01:00:00Z</published><updated>2024-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/effect-parallel-strategies</id><summary type="html"><h1>Parallel traversal effect handlers for OCaml</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:sb2634@cam.ac.uk">Sky Batchelor</a>. It is co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>effects. Xie <em>et al</em> proposed a <code>traverse</code> handler for parallelisation of···<p><a href="https://anil.recoil.org/papers/2021-pldi-retroeff">Retrofitting effect handlers onto OCaml</a>, PLDI 2021 describes how the effect system in OCaml works.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-3"><p><a href="https://github.com/ocaml-multicore/eio">EIO</a> is a high-performance direct-style IO library we have been developing for OCaml.</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-3">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Gradually debugging type errors</title><link href="https://anil.recoil.org/ideas/gradual-type-error-debugging" rel="alternate"></link><published>2024-09-01T01:00:00Z</published><updated>2024-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/gradual-type-error-debugging</id><summary type="html"><h1>Gradually debugging type errors</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:mc2372@cam.ac.uk">Max Carroll</a>. It is co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>···<li><a href="https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.SNAPL.2015.274">Refined Criteria for Gradual Typing</a></li><li><a href="https://arxiv.org/abs/1810.12619">Dynamic Type Inference for Gradual Hindley-Milner Typing</a></li><li><a href="https://arxiv.org/abs/1606.07557">Dynamic Witnesses for Static Type Errors (or, Ill-Typed Programs Usually Go Wrong)</a></li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Paper published on ex-ante forecasts of nature-based solutions</title><link href="https://anil.recoil.org/news/2024-nbs-risk-2" rel="alternate"></link><published>2024-08-31T01:00:00Z</published><updated>2024-08-31T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-nbs-risk-2</id><summary type="html"><p>Our paper on ex-ante projection for nature-based solutions has been published in the <a href="https://www.tandfonline.com/journals/tcmt20">Journal of Carbon Management</a>. I also wrote up some <a href="https://anil.recoil.org/notes/mitigating-nbs-risk-paper">long-form thoughts</a> on it here.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-nbs-risk.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Stop, Start</title><link href="https://mort.io/blog/stop-start/" rel="alternate"></link><published>2024-08-30T01:00:00Z</published><updated>2024-08-30T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/stop-start/</id><summary type="html"><p>Well, here we go again, again. Having stalled out back in 2013 to restart inleak out slowly, in <a href="https://mort.io/tags/old">backdated form</a>.</p>···</span></span><span class="z-source z-nix"><span class="z-string z-quoted z-other z-nix"> <span class="z-punctuation z-definition z-string z-other z-end z-nix">''</span></span><span class="z-invalid z-illegal">;</span></span><span class="z-source z-nix"> <span class="z-invalid z-illegal z-reserved z-nix">in</span></span><span class="z-source z-nix"> <span class="z-punctuation z-definition z-list z-nix">[</span> <span class="z-punctuation z-definition z-attrset z-nix">{</span> <span class="z-entity z-other z-attribute-name z-multipart z-nix">command</span> <span class="z-keyword z-operator z-bind z-nix">=</span> <span class="z-string z-quoted z-double z-nix"><span class="z-punctuation z-definition z-string z-double z-start z-nix">&quot;</span><span class="z-markup z-italic"><span class="z-punctuation z-section z-embedded z-begin z-nix">${</span><span class="z-variable z-parameter z-name z-nix">startup</span><span class="z-punctuation z-section z-embedded z-end z-nix">}</span></span>/bin/startup.sh<span class="z-punctuation z-definition z-string z-double z-end z-nix">&quot;</span></span><span class="z-punctuation z-terminator z-bind z-nix">;</span> <span class="z-punctuation z-definition z-attrset z-nix">}</span> <span class="z-punctuation z-definition z-list z-nix">]</span><span class="z-invalid z-illegal">;</span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>PACT Tropical Moist Forest Accreditation Methodology</title><link href="https://anil.recoil.org/news/2023-pact-tmf-3" rel="alternate"></link><published>2024-08-29T01:00:00Z</published><updated>2024-08-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-pact-tmf-3</id><summary type="html"><p>We have just released the Tropical Moist Forest v2.1 specification, to follow up the now-expired <a href="https://anil.recoil.org/news/2023-pact-tmf-2">v2.0</a> from six months ago. The key updates are a new <a href="https://tinyurl.com/PACTTMFexplainer">high-level explainer</a>, as well as clarifiations for buffer zones and base tiles.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 26 Aug 2024</title><link href="https://ryan.freumh.org/2024-08-26.html" rel="alternate"></link><published>2024-08-26T01:00:00Z</published><updated>2024-08-26T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-08-26.html</id><summary type="html"><article>···dune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages 11.95s user 2.18s system 101% cpu 13.850 total-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Discovering `restic`</title><link href="https://mort.io/blog/restic-discovery/" rel="alternate"></link><published>2024-08-26T01:00:00Z</published><updated>2024-08-26T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/restic-discovery/</id><summary type="html"><p>I recently had cause to try to recover some files from my<a href="https://restic.net/"><code>restic</code></a> backups. These go back for over a year now, andwanted to recover. <code>restic find</code> purports to be able to do this by searching···</span><span class="z-source z-shell z-bash"> <span class="z-keyword z-control z-loop z-end z-shell">done</span>-bisection, which makes it a lot faster.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Nature Sustainability commentary on carbon and biodiversity credits</title><link href="https://anil.recoil.org/notes/nature-crossroads" rel="alternate"></link><published>2024-08-15T01:00:00Z</published><updated>2024-08-15T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/nature-crossroads</id><summary type="html"><p>Our <a href="https://anil.recoil.org/papers/2023-naturecredits">commentary on nature-based credits</a> has been published in <a href="https://www.nature.com/articles/s41893-024-01403-w">Naturelead expertly by my colleagues <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a> and <a class="contact" href="https://www.naturerecovery.ox.ac.uk/people/sophus-zu-ermgassen/">Sophus zu Ermgassen</a>.</p>···<p><a class="contact" href="https://www.naturerecovery.ox.ac.uk/people/sophus-zu-ermgassen/">Sophus zu Ermgassen</a> also gave a fantastic talk at the CCI ont his topic a few months ago that is a must watch for anyone working on carbon or biodiversity markets.</p>-<p>It's also not enough to &quot;just&quot; show that a given project is additional from a satellite perspective, but also that they do not result in justice and equity concerns for the local populations. Current reporting practices often require only superficial descriptions of how projects approach justice and equity issues, which are challenging to verify and lack consistency and transparency. So our group has also been working on <a href="https://4c.cst.cam.ac.uk/news/introducing-new-framework-assessing-justice-and-equity-impacts-nature-based-solutions-projects">a framework for assessing justice and equity impacts</a>, started by <a class="contact" href="https://uk.linkedin.com/in/miranda-lam-a088561b4">Miranda Lam</a>. I've also been working with <a class="contact" href="https://www.cst.cam.ac.uk/people/smc70">Sophie Chapman</a> and <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a> on the <a href="https://anil.recoil.org/ideas/legal-aspects-of-credits">Legal perspectives on integrity issues in forest carbon</a>. Please do get in touch if you have thoughts on this aspect of project development.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Debugging Electron apps</title><link href="https://mort.io/blog/electron-cli/" rel="alternate"></link><published>2024-08-14T01:00:00Z</published><updated>2024-08-14T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/electron-cli/</id><summary type="html"><p>Another short one, this time the magic flags to get debug output and access to<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">APPLICATION</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>enable-logging</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>devtools</span> <span class="z-punctuation z-separator z-continuation z-line z-shell">\</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>platform</span><span class="z-keyword z-operator z-assignment z-option z-shell">=</span>wayland<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>enable-features</span><span class="z-keyword z-operator z-assignment z-option z-shell">=</span>UseOzonePlatform<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>password-store</span><span class="z-keyword z-operator z-assignment z-option z-shell">=</span><span class="z-string z-quoted z-double z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">&quot;</span>gnome_libsecret<span class="z-punctuation z-definition z-string z-end z-shell">&quot;</span></span></span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 12 Aug 2024</title><link href="https://ryan.freumh.org/2024-08-12.html" rel="alternate"></link><published>2024-08-12T01:00:00Z</published><updated>2024-08-12T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-08-12.html</id><summary type="html"><article>···<p><span id="thu-para-3">0install solver for cargo packages</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 5 Aug 2024</title><link href="https://ryan.freumh.org/2024-08-05.html" rel="alternate"></link><published>2024-08-05T01:00:00Z</published><updated>2024-08-05T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-08-05.html</id><summary type="html"><article>···Beyond that, what’s implemented below is just a naive backtracking version which should in theory try all possible combinations of dependencies and versions to see if one works. The first resolution that works causes everything to bail out immediately and return success, and only if nothing works do we actually return an error up the stack.-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Building a Low-Powered NAS</title><link href="https://ryan.freumh.org/nas.html" rel="alternate"></link><published>2024-08-03T01:00:00Z</published><updated>2024-08-03T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/nas.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using wasm to locally explore geospatial layers</title><link href="https://anil.recoil.org/ideas/life-explorer-wasm" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/life-explorer-wasm</id><summary type="html"><h1>Using wasm to locally explore geospatial layers</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:sf729@cam.ac.uk">Sam Forbes</a>. It is co-supervised with <a class="contact" href="https://mynameismwd.org">Michael Dales</a>.</p><p>Some of my projects like <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a> or <a href="https://anil.recoil.org/projects/rsn">Remote Sensing of Nature</a> involve geospatial base maps with···-independent parts of the map.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Towards reproducible URLs with provenance</title><link href="https://anil.recoil.org/ideas/urls-with-provenance" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/urls-with-provenance</id><summary type="html"><h1>Towards reproducible URLs with provenance</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p><p>Vurls are an attempt to add versioning to URI resolution. For example, what should happen when we request <code>https://doi.org/10.1109/SASOW.2012.14</code> and how do we track the chain of events that leads to an answer coming back? The prototype <a href="https://github.com/quantifyearth/vurl">vurl</a> library written in OCaml outputs the following:</p>···<li><a href="https://github.com/quantifyearth/vurl">https://github.com/quantifyearth/vurl</a> has some prototype code.</li><li><a href="https://anil.recoil.org/papers/2024-uncertainty-cs">Uncertainty at scale: how CS hinders climate research</a> has relevant background reading on some of the types of diffs that would be useful in a geospatial context.</li><li><a href="https://anil.recoil.org/papers/2024-planetary-computing">Planetary computing for data-driven environmental policy-making</a> covers the broader data processing pipelines we need to integrate into.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Real-time mapping of changes in species extinction risks</title><link href="https://anil.recoil.org/ideas/mapping-species-extinction-risks" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/mapping-species-extinction-risks</id><summary type="html"><h1>Real-time mapping of changes in species extinction risks</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://emiliolr.github.io">Emilio Luz-Ricca</a>. It is co-supervised with <a class="contact" href="https://www.zoo.cam.ac.uk/directory/andrew-balmford">Andrew Balmford</a>.</p>···-additional anthropogenic threats on habitat quality on a per-species basis.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Preprint on Terracorder sensing now available</title><link href="https://anil.recoil.org/news/2024-terracorder-1" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-terracorder-1</id><summary type="html"><p>Our preprint on the Terracorder ground sensing platform I've been working with <a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> at Imperial on is now available on arXiv. It's a heady combination of ESP32 very low power hardware, combined with Q-learning to build cooperative networks of them that can run for long periods of time without wasting energy on redundant operations.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-terracorder.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Nature Sustainability article on carbon/biodiversity credits</title><link href="https://anil.recoil.org/news/2023-naturecredits-1" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-naturecredits-1</id><summary type="html"><p>Our commentary on nature-based credits has been published in <a href="https://www.nature.com/natsustain/">Nature Sustainability</a>. I wrote some <a href="https://anil.recoil.org/notes/nature-crossroads">thoughts</a> about it here as well.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-naturecredits.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mapping hunting risks for wild meat in protected areas</title><link href="https://anil.recoil.org/ideas/mapping-hunting-risks-for-wild-meat" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/mapping-hunting-risks-for-wild-meat</id><summary type="html"><h1>Mapping hunting risks for wild meat in protected areas</h1><p>This is an idea proposed in 2024 as a postdoctoral project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://charlesemogor.com">Charles Emogor</a>. It is co-supervised with <a class="contact" href="https://teamcore.seas.harvard.edu/tambe">Milind Tambe</a>.</p>···particularly from some of the newer base maps being developed in our <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a>-project.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Implementing a higher-order choreographic language</title><link href="https://anil.recoil.org/ideas/choregraphic-programming-ocaml" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/choregraphic-programming-ocaml</id><summary type="html"><h1>Implementing a higher-order choreographic language</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/Rokcas">Rokas Urbonas</a>. It was co-supervised with <a class="contact" href="https://www.cst.cam.ac.uk/people/ds709">Dmirtij Szamozvancev</a>.</p>the <a href="https://dl.acm.org/doi/pdf/10.1145/3498684">Pirouette calculus</a>. This language was meant to make the notoriously···<li><a href="https://www.youtube.com/watch?v=KEkmcXVtFi0">Video</a> of his talk</li><li><a href="https://ocaml2024.hotcrp.com/doc/ocaml2024-paper17.pdf">PDF</a> of his writeup.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Foundation models for complex geospatial tasks</title><link href="https://anil.recoil.org/ideas/ssl-for-geospatial-tasks" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/ssl-for-geospatial-tasks</id><summary type="html"><h1>Foundation models for complex geospatial tasks</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://www.cst.cam.ac.uk/people/og309">Onkar Gulati</a>. It is co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and <a class="contact" href="https://coomeslab.org">David A Coomes</a>.</p>enables versatile <em>pretrained</em> models to leverage the complex relationships···-sensing instruments.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>An imperative, pure and effective specification language</title><link href="https://anil.recoil.org/ideas/effective-specification-languages" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/effective-specification-languages</id><summary type="html"><h1>An imperative, pure and effective specification language</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:ms2922@cam.ac.uk">Max Smith</a>. It is co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>···-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Self Hosting - 2024 edition</title><link href="https://digitalflapjack.com/blog/hosting24/" rel="alternate"></link><published>2024-07-18T17:39:22Z</published><updated>2024-07-18T17:39:22Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/hosting24/</id><summary type="html"><p>Starting in around 2018 or so I decided to start reclaiming my Internet. Before then, as most people had I suspect, I'd drifted into relying on cloud services for just about everything I could possibly want, but by that year I think it'd become apparent to me that I didn't like relying on other companies as the main host of my digital legacy. There was no one thing, but it seems time and time again large internet service providers like to make sure I feel glad that I've done this by finding new ways to exploit their users' data.</p><p>That said, I'm somewhat pragmatic about it, as hosting all the things is hard and time consuming, and I really don't like doing system administration. There's nothing wrong with it, and I know many people who enjoy doing that, but it doesn't really bring me joy. So I've ended up with a mish-mash of things that I personally host locally, personally host on other servers, and let other people host for me.</p><p>Anyway, this page is an attempt to snapshot what I have done and why, along with what has worked and what needs work still. I do this both to help future me and as I occasionally see posts of people wondering if they should or shouldn't host their own stuff, and perhaps this'll help them decide if that's right for their needs or not.</p>···<p>As you can see, it's a very mixed bag of solutions I've come up with as I try to keep ownership of my Internet presence. I make not attempt to suggest any of this is optimal - more it's just a mix of pragmatism based on what I need versus how much effort I'm willing to put into it. But still, I see people talking about self hosting often, and so perhaps this'll both show you some options, and normalise the idea that it doesn't need to be perfect or all-or-nothing for you to make some inroads to taking back control of how you exist on the Internet. I don't use Azure or AWS for instance either, for a while I did, but I don't really operate at the scale where the complexity is justified - I'm not really dealing with a lot of traffic for most things. I don't deal with CDNs like Cloudflare either, as I'm not that big, and the few people who do want to see my websites probably don't care if it's a few seconds slower than it could be.</p>-<p>I'll perhaps try to do a follow on post in a couple of years to see how much, if anything has changed.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>New set of ideas for incoming students</title><link href="https://anil.recoil.org/notes/student-ideas" rel="alternate"></link><published>2024-07-15T01:00:00Z</published><updated>2024-07-15T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/student-ideas</id><summary type="html"><p>I've refreshed the set of project <a href="https://anil.recoil.org/ideas">ideas</a> for incoming <a href="https://www.cst.cam.ac.uk/teaching/part-ii">CST Part II</a> and <a href="https://www.cst.cam.ac.uk/teaching/masters">MPhil</a> and PhD student projects for 2024-2025.</p>-<p>These are not an exhaustive list, but intended to kickstart conversations for things we could work on together. Do get in touch if you're an incoming student and see something that grabs your interest.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 8 Jul 2024</title><link href="https://ryan.freumh.org/2024-07-08.html" rel="alternate"></link><published>2024-07-08T01:00:00Z</published><updated>2024-07-08T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-07-08.html</id><summary type="html"><article><span> Previous: <a href="2024-06-24.html">Mon 24 Jun 2024</a> </span>···/usr/bin/opam switch import &quot;/root/.opam/default/.opam-switch/backup/state-20240711150233.export&quot;</code></pre>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>COMPASS 2024 report on the CoRE stack RIC meeting</title><link href="https://anil.recoil.org/notes/compass2024-ric-tripreport" rel="alternate"></link><published>2024-07-08T01:00:00Z</published><updated>2024-07-08T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/compass2024-ric-tripreport</id><summary type="html"><p>This is a trip report of <a href="https://compass.acm.org">ACM COMPASS 2024</a> held in New Delhi, which had a novel track of <a href="https://compass.acm.org/research-impact-collaboratives/">&quot;Research to Impact Collaboratives&quot;</a> that drew me in. The general chair, <a href="https://www.cse.iitd.ac.in/~aseth/">Aadi Seth</a> wrote a fantastic book on &quot;<a href="https://www.cse.iitd.ac.in/~aseth/act.html">Technology and Disempowerment</a>&quot; a few years ago, and he organised one RIC session on the CoRE Stack -- a climate adaptation stack for rural communities. This was a must-visit for me as it is closely related to the work we've been doing on <a href="https://anil.recoil.org/projects/rsn">Remote Sensing of Nature</a> and <a href="https://anil.recoil.org/projects/plancomp">Planetary Computing</a>. The following notes are somewhat raw as they have only been lightly edited, but please refer to the more polished documents on the <a href="https://docs.google.com/document/d/1MJ-Nw_P3z6gI9rvh4OcjJmdZRE83D_OXedgEeDZDnm8/edit">agenda for ACM COMPASS RIC</a> and the overall <a href="https://core-stack.org">CoRE Stack</a> initiative on commoning technologies for resilience and equality</p><p>The conference itself was held at <a href="http://iiitd.ac.in/">IIIT-D</a> in New Delhi, right at the cusp of the monsoon season and after record-breaking temperatures. Luckily, as always, the hospitality and welcoming nature of New Delhi overrode all the climate discomfort!</p><p><figure class="image-center"><img alt="Arriving at the IIIT-D campus" class="content-image" src="https://anil.recoil.org/images/compass24/compass24-17.webp" title="Arriving at the IIIT-D campus" /><figcaption>Arriving at the IIIT-D campus</figcaption></figure>···<img alt="" class="content-image" src="https://anil.recoil.org/images/compass24/compass24-22.webp" title="Made it back to London in time to catch some tennis" />-</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Second preprint of the LIFE biodiversity metric available</title><link href="https://anil.recoil.org/news/2024-life-2" rel="alternate"></link><published>2024-07-01T01:00:00Z</published><updated>2024-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-life-2</id><summary type="html"><p>We have made an update to the <a href="https://anil.recoil.org/projects/life">LIFE</a> biodiversity metric based on reviewer feedback, and are very please that it has been accepted for publication early next year as part of a special issue from the Royal Society. Any comments would be most welcome before we submit the final proofs in a few months.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reinstalling `maestral`</title><link href="https://mort.io/blog/reinstall-maestral/" rel="alternate"></link><published>2024-06-28T01:00:00Z</published><updated>2024-06-28T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/reinstall-maestral/</id><summary type="html"><p>A short one this; just a crib of commands to redo <code>maestral</code> (unofficial<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-comment z-line z-number-sign z-shell"><span class="z-punctuation z-definition z-comment z-begin z-shell">#</span></span><span class="z-comment z-line z-number-sign z-shell"> remove existing configuration</span><span class="z-comment z-line z-number-sign z-shell"></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">rm</span></span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-meta z-group z-expansion z-tilde"><span class="z-variable z-language z-tilde z-shell">~</span></span>/.config/maestral/maestral.ini</span>···</span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">maestral</span></span><span class="z-meta z-function-call z-arguments z-shell"> stop</span> <span class="z-keyword z-operator z-logical z-and z-shell">&amp;&amp;</span> <span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">maestral</span></span><span class="z-meta z-function-call z-arguments z-shell"> start </span></span><span class="z-source z-shell z-bash"><span class="z-comment z-line z-number-sign z-shell"><span class="z-punctuation z-definition z-comment z-begin z-shell">#</span></span><span class="z-comment z-line z-number-sign z-shell"> if desired, add autocompletion for `maestral` in bash</span><span class="z-comment z-line z-number-sign z-shell"></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-support z-function z-double-brace z-begin z-shell">[[</span> <span class="z-meta z-group z-expansion z-command z-parens z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-punctuation z-section z-parens z-begin z-shell">(</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">which</span></span><span class="z-meta z-function-call z-arguments z-shell"> maestral <span class="z-constant z-numeric z-integer z-decimal z-file-descriptor z-shell">2</span><span class="z-keyword z-operator z-assignment z-redirection z-shell">&gt;</span>/dev/null</span><span class="z-punctuation z-section z-parens z-end z-shell">)</span></span> <span class="z-support z-function z-double-brace z-end z-shell">]]</span></span> <span class="z-keyword z-operator z-logical z-and z-shell">&amp;&amp;</span> <span class="z-meta z-function-call z-shell"><span class="z-support z-function z-source z-shell">source</span></span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-keyword z-operator z-assignment z-redirection z-process z-shell">&lt;</span><span class="z-punctuation z-section z-parens z-begin z-shell">(</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">maestral</span></span><span class="z-meta z-function-call z-arguments z-shell"> completion bash</span><span class="z-punctuation z-section z-parens z-end z-shell">)</span></span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Speaking at CCI workshop on conservation evidence</title><link href="https://anil.recoil.org/news/80795e06-ac75-4015-b178-3cfcbb233685-1" rel="alternate"></link><published>2024-06-25T01:00:00Z</published><updated>2024-06-25T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/80795e06-ac75-4015-b178-3cfcbb233685-1</id><summary type="html"><p><a class="contact" href="https://www.zoo.cam.ac.uk/directory/bill-sutherland">Bill Sutherland</a> organised a workshop at the CCI on how to bring about an <a href="https://about.conservationevidence.com/2024/07/12/the-next-steps-for-transforming-conservation-ideas-from-the-effectiveness-revolution-workshop/">Effectiveness Revolution</a> for transforming conservation into an evidence-driven discipline.</p><p>The aim was to discuss the &quot;Evidence Emergency&quot; (The Wildlife Trusts' term), the urgent need to embed evidence into decision-making and to create additional evidence to fill the considerable gaps in the evidence base, to improve conservation practice.</p><p>I gave a talk about our early results with the <a href="https://anil.recoil.org/papers/2024-ce-llm">conservation copilots</a> work.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 24 Jun 2024</title><link href="https://ryan.freumh.org/2024-06-24.html" rel="alternate"></link><published>2024-06-24T01:00:00Z</published><updated>2024-06-24T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-06-24.html</id><summary type="html"><article><span> Previous: <a href="2024-05-27.html">Mon 27 May 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Interview with AI@CAM about conservation</title><link href="https://anil.recoil.org/notes/aicam-interview-ce" rel="alternate"></link><published>2024-06-09T01:00:00Z</published><updated>2024-06-09T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/aicam-interview-ce</id><summary type="html"><p>I talked to the <a href="https://ai.cam.ac.uk">AI@Cam</a> team to discuss our <a href="https://anil.recoil.org/notes/aicn-in-aicam">AICN</a>project and what we're planning to do in the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> team.</p><p>Over the last two decades, the University of Cambridge-based project Conservation Evidence has screened more than 1.6 million scientific papers on conservation, as well as manually summarising 8,600+ studies relating to conservation actions. However, the current project’s work is limited by the specialised skills needed to screen and summarise relevant studies. It took more than 75 person years to manually curate the current database and only a few 100 papers can be added each year. By accelerating these efforts, AI has the potential to transform the impact this database has on biodiversity conservation.</p><p>What we’re aiming to do through the ai@cam project – bringing together an interdisciplinary team from across the fields of computer science, ecology, climate and conservation – is to build up models of the world that are really detailed and that can be queried by policy makers to help make informed decisions.</p><p><cite>-- <a href="https://ai.cam.ac.uk/blog/harnessing-the-power-of-ai-to-help-save-our-planet">AI@Cam</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Hyperspectrally identifying trees in tropical forests</title><link href="https://anil.recoil.org/news/2024-hyper-tropical-mapping-1" rel="alternate"></link><published>2024-06-01T01:00:00Z</published><updated>2024-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-hyper-tropical-mapping-1</id><summary type="html"><p>A preprint on using <a href="https://en.wikipedia.org/wiki/Hyperspectral_imaging">hyperspectral sensors</a> to perform tree species identification across the tropics is now available on bioarxiv.</p><p>This study introduces a new approach for mapping tree species linking a multi-temporal implementation of the CNN method detectree2 to segment tree-crowns from aerial photographs to machine learning classifiers to identify species from hyperspectral data.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-hyper-tropical-mapping.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 27 May 2024</title><link href="https://ryan.freumh.org/2024-05-27.html" rel="alternate"></link><published>2024-05-27T01:00:00Z</published><updated>2024-05-27T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-05-27.html</id><summary type="html"><article><span> Previous: <a href="2024-05-20.html">Mon 20 May 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Programming for the Planet</title><link href="https://anil.recoil.org/news/d592bf17-c835-435f-9469-f0f65e926975-1" rel="alternate"></link><published>2024-05-27T01:00:00Z</published><updated>2024-05-27T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/d592bf17-c835-435f-9469-f0f65e926975-1</id><summary type="html"><p>I was invited by Mary Sheeran to deliver a keynoted at <a href="https://www.lambdadays.org/">Lambda Days</a>, and I decided to go along to talk about my work on <a href="https://anil.recoil.org/videos/981c00b5-32c0-4cac-a387-6c945dfa9934">Programming for the Planet</a>. The conference was a really vibrant crowd and I would definitely go along in future years. It's best summarised via an <a href="https://www.youtube.com/watch?v=Kao-LguvYDU&amp;list=PLvL2NEhYV4ZtX2TurK0BIlKD_cHct0rSs">interview video</a> they took of all the speakers.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 20 May 2024</title><link href="https://ryan.freumh.org/2024-05-20.html" rel="alternate"></link><published>2024-05-20T01:00:00Z</published><updated>2024-05-20T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-05-20.html</id><summary type="html"><article><span> Previous: <a href="2024-05-13.html">Mon 13 May 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 13 May 2024</title><link href="https://ryan.freumh.org/2024-05-13.html" rel="alternate"></link><published>2024-05-13T01:00:00Z</published><updated>2024-05-13T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-05-13.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 6 May 2024</title><link href="https://ryan.freumh.org/2024-05-06.html" rel="alternate"></link><published>2024-05-06T01:00:00Z</published><updated>2024-05-06T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-05-06.html</id><summary type="html"><article><span> Previous: <a href="2024-04-29.html">Mon 29 Apr 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Quantifying the impact of the food we eat on species extinctions</title><link href="https://anil.recoil.org/news/2024-food-life-1" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-food-life-1</id><summary type="html"><p>Submitted preprint on quantifying the biodiversity cost of global food consumption for peer review</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-food-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Predicting species using machine learning at CCAI</title><link href="https://anil.recoil.org/news/2024-sdm-sa-1" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-sdm-sa-1</id><summary type="html"><p><a class="contact" href="https://github.com/emorris7">Emily Morris</a> did some great MPhil work here in her Masters on using <a href="https://anil.recoil.org/ideas/sdms-with-cnns">CNNs with satellite data</a> to do species predictions in South Africa better. She presented it at the <a href="https://www.climatechange.ai/events/iclr2024">ICLR CCAI</a> workshop in Vienna, and is now off to do a PhD at Oxford!</p><p>Species distribution models are crucial tools that predict species locations by interpolating observed field data with environmental information. We develop an improved, scalable method for species distribution modelling by proposing a dataset pipeline that incorporates global remote sensing imagery, land use classification data, environmental variables, and observation data, and utilising this with CNN models to predict species presence at higher spatial and temporal resolutions than well-established species distribution modelling methods.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-sdm-sa.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Low-latency wayland compositor in OCaml</title><link href="https://anil.recoil.org/ideas/wayland" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/wayland</id><summary type="html"><h1>Low-latency wayland compositor in OCaml</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:tt492@cam.ac.uk">Tom Thorogood</a>. It is co-supervised with <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>.</p>···<p><a href="https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c">https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c</a></p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-5">↩︎︎</a></span></li><li id="fn-6"><p><a href="https://github.com/talex5/ocaml-wayland">https://github.com/talex5/ocaml-wayland</a></p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-6">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Diffusion models for terrestrial predictions about land use change</title><link href="https://anil.recoil.org/ideas/diffusion-model-satellites" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/diffusion-model-satellites</id><summary type="html"><h1>Diffusion models for terrestrial predictions about land use change</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p>···<p>&quot;<a href="https://arxiv.org/abs/2405.03150">Video Diffusion Models: A Survey</a>&quot; (May 2024), <a href="https://video-diffusion.github.io">https://video-diffusion.github.io</a>.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-1"><p>&quot;<a href="https://arxiv.org/abs/2312.03606">DiffusionSat: A Generative Foundation Model for Satellite Imagery</a>&quot; (Dec 2023)</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 29 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-29.html" rel="alternate"></link><published>2024-04-29T01:00:00Z</published><updated>2024-04-29T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-04-29.html</id><summary type="html"><article><span> Previous: <a href="2024-04-22.html">Mon 22 Apr 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 22 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-22.html" rel="alternate"></link><published>2024-04-22T01:00:00Z</published><updated>2024-04-22T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-04-22.html</id><summary type="html"><article><span> Previous: <a href="2024-04-15.html">Mon 15 Apr 2024</a> </span>···<p><span id="para-1">I also added a CalDAV server to Eilean.</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Green Urban Equity in the UK</title><link href="https://ancazugo.github.io/python/carto/uk-3-30-300.html" rel="alternate"></link><published>2024-04-19T01:00:00Z</published><updated>2024-04-19T01:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/python/carto/uk-3-30-300</id><summary type="html"><p>This is part of my presentation at EGU24 in Vienna that was about mapping green spaces in the UK using the 3-30-300 rule. You can find out more about the abstract <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html">here</a>.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Mon 15 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-15.html" rel="alternate"></link><published>2024-04-15T01:00:00Z</published><updated>2024-04-15T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-04-15.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 8 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-08.html" rel="alternate"></link><published>2024-04-08T01:00:00Z</published><updated>2024-04-08T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-04-08.html</id><summary type="html"><article>···<p><span id="thu-para-1">NB <a href="https://github.com/mmaker/ocaml-letsencrypt">ocaml-letsencrypt</a>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Teaching 1A Security and Software Engineering</title><link href="https://anil.recoil.org/notes/swseng" rel="alternate"></link><published>2024-04-04T01:00:00Z</published><updated>2024-04-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/swseng</id><summary type="html"><p>We're still reeling from the shocking and unexpected <a href="https://www.cst.cam.ac.uk/news/ross-anderson">passing of Ross Anderson</a>last week. You can read a lovely <a href="https://raintown.org/ross_anderson/">tribute</a> to him by <a class="contact" href="https://raintown.org">Satnam Singh</a>, and I still getting my thoughts together on all the guidance, advice and prods in the right direction that Ross has given me over the years.</p>-<p>In pragmatic news, I'll be emergency lecturing part of Ross' 1A <a href="https://www.cl.cam.ac.uk/teaching/2324/SWSecEng/">Software and Security Engineering</a> course here at Cambridge, along with my colleagues Martin, Alastair, Mort and Rob who have all stepped up at short notice. I have absolutely no idea how we'll live up to Ross' standard, but we'll do our very best in his memory!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Global, robust and comparable digital carbon assets</title><link href="https://anil.recoil.org/news/2024-cc-blockchain-1" rel="alternate"></link><published>2024-04-04T01:00:00Z</published><updated>2024-04-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-cc-blockchain-1</id><summary type="html"><p>Paper on smart contracts for carbon credits at <a href="http://icbc2024.ieee-icbc.org">ICBC 2024</a> in Dublin</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-cc-blockchain.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 1 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-01.html" rel="alternate"></link><published>2024-04-01T01:00:00Z</published><updated>2024-04-01T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-04-01.html</id><summary type="html"><article><span> Previous: <a href="2024-03-25.html">Mon 25 Mar 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Rolling out a new site design</title><link href="https://anil.recoil.org/notes/bushel-step1" rel="alternate"></link><published>2024-04-01T01:00:00Z</published><updated>2024-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/bushel-step1</id><summary type="html"><p>I've done a redesign of my site after about 20 years since the last one <a href="https://anil.recoil.org/notes/opening-anil-recoil-org">back in 2003</a>.The site design is based on my upcoming Bushel content manager, which I'll post about more once I get the data model in place and try it out properly using this site as a guinea pig.</p>-<p><a class="contact" href="https://nick.recoil.org">Nick Ludlam</a> also refreshed <a href="https://nick.recoil.org">his website</a> since we were chatting about how outdated our web presences were, and he also put up a main <a href="https://recoil.org">recoil.org</a> page for the main server.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 25 Mar 2024</title><link href="https://ryan.freumh.org/2024-03-25.html" rel="alternate"></link><published>2024-03-25T00:00:00Z</published><updated>2024-03-25T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-03-25.html</id><summary type="html"><article><span> Previous: <a href="2024-03-18.html">Mon 18 Mar 2024</a> </span>···probably modifying <a href="https://github.com/lazamar/nix-package-versions">https://github.com/lazamar/nix-package-versions</a>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 18 Mar 2024</title><link href="https://ryan.freumh.org/2024-03-18.html" rel="alternate"></link><published>2024-03-18T00:00:00Z</published><updated>2024-03-18T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-03-18.html</id><summary type="html"><article><span> Previous: <a href="2024-03-11.html">Mon 11 Mar 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 11 Mar 2024</title><link href="https://ryan.freumh.org/2024-03-11.html" rel="alternate"></link><published>2024-03-11T00:00:00Z</published><updated>2024-03-11T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-03-11.html</id><summary type="html"><article><span> Previous: <a href="2024-02-26.html">Mon 26 Feb 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Preprint available on insuring against variability of NbS</title><link href="https://anil.recoil.org/news/2024-nbs-risk-1" rel="alternate"></link><published>2024-03-01T00:00:00Z</published><updated>2024-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-nbs-risk-1</id><summary type="html"><p>A new preprint is available on our work on ex-ante pricing models for nature-based solutions. It is currently under review, so any feedback is most welcome!</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-nbs-risk.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications</title><link href="https://anil.recoil.org/news/2024-green-urban-eq-1" rel="alternate"></link><published>2024-03-01T00:00:00Z</published><updated>2024-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-green-urban-eq-1</id><summary type="html"><p>Abstract on urban biodiversity and human health at <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html">EGU 24</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-green-urban-eq.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A Case for Planetary Computing</title><link href="https://anil.recoil.org/news/2024-planetary-computing-2" rel="alternate"></link><published>2024-03-01T00:00:00Z</published><updated>2024-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-planetary-computing-2</id><summary type="html"><p>Revision of planetary computing preprint</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-planetary-computing.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 26 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-26.html" rel="alternate"></link><published>2024-02-26T00:00:00Z</published><updated>2024-02-26T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-02-26.html</id><summary type="html"><article><span> Previous: <a href="2024-02-19.html">Mon 19 Feb 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 19 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-19.html" rel="alternate"></link><published>2024-02-19T00:00:00Z</published><updated>2024-02-19T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-02-19.html</id><summary type="html"><article><span> Previous: <a href="2024-02-12.html">Mon 12 Feb 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>FOSDEM</title><link href="https://ryan.freumh.org/fosdem.html" rel="alternate"></link><published>2024-02-13T00:00:00Z</published><updated>2024-02-13T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/fosdem.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 12 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-12.html" rel="alternate"></link><published>2024-02-12T00:00:00Z</published><updated>2024-02-12T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-02-12.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 5 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-05.html" rel="alternate"></link><published>2024-02-05T00:00:00Z</published><updated>2024-02-05T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-02-05.html</id><summary type="html"><article><span> Previous: <a href="2024-01-29.html">Mon 29 Jan 2024</a> </span>···<p><span id="fosdem-para-0">I attended FOSDEM and wrote up some notes <a href="./fosdem.html">here</a>!</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Selected in the AI@CAM challenge for conservation research</title><link href="https://anil.recoil.org/notes/aicn-in-aicam" rel="alternate"></link><published>2024-02-05T00:00:00Z</published><updated>2024-02-05T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/aicn-in-aicam</id><summary type="html"><p>We won the <a href="https://www.cam.ac.uk/stories/AI-deas-launch">AI@CAM challenge</a> that was sent outOur project on using <a href="https://www.cam.ac.uk/stories/AI-deas-launch#section-9RKgEyI2LZ">AI for climate and nature</a>···<p>This project is a collaboration between lots of friendly people at Cambridge Zero, the Cambridge Conservation Initiative, Conservation Evidence, the Institute for Computing for Climate Science, Conservation Research Institute, Centre for Landscape Regeneration, <a href="https://anil.recoil.org/projects/4c">Cambridge Centre for Carbon Credits</a> and Cambridge Centre for Earth Observation.</p><p><figure class="image-center"><img alt="Team AICN in the CCI building, Feb 2024" class="content-image" src="https://anil.recoil.org/images/aicn-team-feb24.webp" title="Team AICN in the CCI building, Feb 2024" /><figcaption>Team AICN in the CCI building, Feb 2024</figcaption></figure>-</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Uncertainty at scale: how CS hinders climate research</title><link href="https://anil.recoil.org/news/2024-uncertainty-cs-1" rel="alternate"></link><published>2024-02-01T00:00:00Z</published><updated>2024-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-uncertainty-cs-1</id><summary type="html"><p>Paper on uncertainty in climate science in <a href="https://undonecs.sciencesconf.org">Undone CS</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-uncertainty-cs.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 29 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-29.html" rel="alternate"></link><published>2024-01-29T00:00:00Z</published><updated>2024-01-29T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-01-29.html</id><summary type="html"><article><span> Previous: <a href="2024-01-22.html">Mon 22 Jan 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 22 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-22.html" rel="alternate"></link><published>2024-01-22T00:00:00Z</published><updated>2024-01-22T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-01-22.html</id><summary type="html"><article><span> Previous: <a href="2024-01-15.html">Mon 15 Jan 2024</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 15 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-15.html" rel="alternate"></link><published>2024-01-15T00:00:00Z</published><updated>2024-01-15T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-01-15.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 8 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-08.html" rel="alternate"></link><published>2024-01-08T00:00:00Z</published><updated>2024-01-08T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-01-08.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Tiny Code Christmas - part 2: learning OCaml and that demos are mostly functional</title><link href="https://digitalflapjack.com/blog/tcc-part2/" rel="alternate"></link><published>2024-01-03T09:57:06Z</published><updated>2024-01-03T09:57:06Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/tcc-part2/</id><summary type="html"><p>This post is a follow on to the previous <a href="/blog/tcc/">part 1 about Tiny Code Christmas 2022</a>, and is about what I did for TCC 2023. In order to get more info on what TCC is and why it's a fun thing to do, I recommend you start there, but if you're just interested in me messing around with <a href="https://ocaml.org/">OCaml</a>, then you're in the right place.</p><p>There were two things that motivated me to tackle this years TCC in the OCaml language. Firstly, a bunch of my colleagues at work use OCaml, and indeed work on language, and so there's been a bunch of encouragement from them that I should join in. However, I find I have two modes when it comes to working with programming languages: I can either work on a problem I'm not familiar with in a language I'm comfortable with, or I can do the inverse and tackle problems that I'm comfortable with in a language I'm having to pick up as I go, but I can't do both. Given my current work requires that I spend my time implementing ecological things and trying to do new things from a computer science perspective, I've just been leaning on my go to set of languages: Go, Python, and occasionally Swift.</p><p>In a parallel thread, a couple of months ago I was at the return of <a href="https://twelve.barcamplondon.org">London BarCamp</a>, and I happened to bump into <a href="https://www.jonathanhogg.com">Jonathan Hogg</a>, someone with whom I used to share an office when I was doing my PhD. Jonathan was giving a talk, so I went to see what he was currently up to, and learned about <a href="https://github.com/jonathanhogg/flitter">Flitter</a>, a purely functional programming language that he'd created to help him program visuals for live performances. I had a brief play with this after, as it seemed very cool, but a lack of free time eventually meant I didn't get far. But I liked the idea of having a declarative was to describe a light show rather than a long list of do this then that.</p>···<p>So, as a way of learning a new language, TCC is a pretty good route. I wrote a little bit of OCaml every day for the better part of a month, and slowly my code got more idiomatic thanks to the guidance of my colleagues like the ever patient <a href="https://patrick.sirref.org">Patrick</a>. I was pleased to see that Jonathan also joined in TCC in the end with Flitter, to give another take on how functional some of these are, given Flitter is a must more pure functional language that OCaml (an advantage of being domain specific).</p><p>Do I know OCaml inside out yet? Certainly not, but I feel I've got enough familiarity that I might try using it in lieu of Go for a few projects this year. I know that I'm not yet an OCaml natural, as I stick to the comfort of explicit type declarations rather than letting the compiler use type inference for example, but I do have colleagues to help me get over that in the coming year.</p><p>I'm going to use the follow on challenge of Genuary, a generative art prompt a day for January, to try take my OCaml fantasy retro computer library to a sort of completed point so that I can draw a line under it and feel I have a suitable conclusion, and thing should anyone else want to try TCC in OCaml in the future can pick up and use without having to worry about both suitable abstractions, graphics libraries, and doing TCC in a language not many use.</p>-<p>I do want to give a quick shout out once again to the <a href="https://lovebyte.party">LoveByte</a> community - not only is TCC a nicely rounded set of challenges that make for a great little puzzle a day, both the organisers and discord we very welcoming to the idea of someone making their own thing of it rather than just using one of the traditional retro/fantasy platforms. At no point did anyone object to OCaml being thrown into the usual mix of Lua solutions - it was accepted as a fun variation, and my solutions (all of which are <a href="https://mynameismwd.org/tags/tcc/">up on my personal blog here</a>) made it into the end of TCC live stream, which was nice. A great community of people interested in learning and helping others have fun.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Tiny Code Christmas - part 1: making coding fun through constraints and community</title><link href="https://digitalflapjack.com/blog/tcc/" rel="alternate"></link><published>2024-01-02T13:00:56Z</published><updated>2024-01-02T13:00:56Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/tcc/</id><summary type="html"><p>Normally, as someone who codes for a living, xmas is a time for me to down tools and step away from the computer for a bit, spent time with family, spend some time in the <a href="https://electricflapjack.com/">workshop</a> and generally not stare at a computer so much. But this last two years I've had a lot of fun doing some small amounts of coding for fun. In this and the next post, I'm going to go through what got me doing this, what I learned from it, and why I recommend it to others. But the TL;DR is along the lines of: small regular constrained challenges, community, and exploration.</p>···<p>By the end I had items to collect, simple NPCs, mountains, and sorted occlusion problems. Enough to satisfy my itch before I had to turn my coding attention back to work. One day I'd like to pick this back up and do something with it - I have an idea for building a community based little open world game - but there's no urgency, and it's parked in a nice place.</p><p>As you can see if you've made it this far, TCC 2022 wasn't just fun for me because it was a coding thing and I'm a nerd, rather it was fun as I promised me a way to have some fun without it being a big drain on my holidays, let me work with a community of nice people via the LoveByte Discord, and inspired me to try a few things afterwards based on that which I'd not otherwise have tried. The barrier to entry to TCC is very low - TIC80 can be downloaded for free, Lua is a super easy language to learn, and the Discord is there if you want to chat to people. Best yet, the challenges are just there, you don't need it to be christmas to take part, you can do so at your own leisure.</p>-<p>In the next post, I'll talk about what I did for TCC 2023, where I took it in quite a different direction.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 1 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-01.html" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2024-01-01.html</id><summary type="html"><article><span> Previous: <a href="2023-12-25.html">Mon 25 Dec 2023</a> </span>···mbsync/goimapnotify/aerc/mu/msmtp/gpgp/ldapsearch <a href="https://github.com/RyanGibb/nixos/tree/7f303f5ff5283d31aa98f88574bfc85f4634afed/modules/personal/home/mail">nix</a>.</li>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Spatial and multi-modal extraction from conservation literature</title><link href="https://anil.recoil.org/ideas/spatial-summarisation-of-llms" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/spatial-summarisation-of-llms</id><summary type="html"><h1>Spatial and multi-modal extraction from conservation literature</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>, <a class="contact" href="https://profiles.imperial.ac.uk/a.christie">Alec Christie</a> and <a class="contact" href="https://www.zoo.cam.ac.uk/directory/bill-sutherland">Bill Sutherland</a>.</p><p>The <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> database contains information on numerous conservation actions and···<li>The <a href="https://docs.ragas.io/en/stable/index.html">Ragas framework</a> for RAG evaluation</li><li><a href="https://arxiv.org/abs/2406.02524v2">CheckEmbed: Effective Verification of LLM Solutions to Open Ended Tasks</a>, arxiv:2406.02524v2, June 2024</li><li><a href="https://arxiv.org/abs/2210.00045">Calibrating Sequence Likelihood Improves Conditional Language Generation</a>, arxiv:2210.00045, September 2000</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Privacy preserving emissions disclosure techniques</title><link href="https://anil.recoil.org/ideas/tardis" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/tardis</id><summary type="html"><h1>Privacy preserving emissions disclosure techniques</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://www.cst.cam.ac.uk/people/psjm3">Jessica Man</a>. It is co-supervised with <a class="contact" href="https://martin.kleppmann.com">Martin Kleppmann</a>.</p>···-<p>We published a workshop paper on this topic in <a href="https://anil.recoil.org/papers/2024-loco-emissions">Emission Impossible: privacy-preserving carbon emissions claims</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Low-power sensing infrastructure for biodiversity</title><link href="https://anil.recoil.org/ideas/recording-nature" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/recording-nature</id><summary type="html"><h1>Low-power sensing infrastructure for biodiversity</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a>. It is co-supervised with <a class="contact" href="https://haddadi.github.io/">Hamed Haddadi</a>.</p>···-<a href="https://anil.recoil.org/papers/2024-terracorder">Terracorder: Sense Long and Prosper</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Legal perspectives on integrity issues in forest carbon</title><link href="https://anil.recoil.org/ideas/legal-aspects-of-credits" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/legal-aspects-of-credits</id><summary type="html"><h1>Legal perspectives on integrity issues in forest carbon</h1><p>This is an idea proposed in 2024 as a postdoctoral project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.cst.cam.ac.uk/people/smc70">Sophie Chapman</a>. It was co-supervised with <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a>.</p>but there are integrity issues on the supply side.<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup>···<p>See the note on <a href="https://anil.recoil.org/notes/nature-crossroads">Nature Sustainability commentary on carbon and biodiversity credits</a></p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li><li id="fn-2"><p>See the <a href="https://anil.recoil.org/projects/4c">Trusted Carbon Credits</a> project and related papers.</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Generating chunk-free embeddings for LLMs</title><link href="https://anil.recoil.org/ideas/chunk-free-embeddings" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/chunk-free-embeddings</id><summary type="html"><h1>Generating chunk-free embeddings for LLMs</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:mj651@cam.ac.uk">Mark Jacobsen</a>. It is co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p>···-for separate summarization and embedding processes.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Evaluating RAG pipelines for conservation evidence</title><link href="https://anil.recoil.org/ideas/rag-evaluation-for-ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/rag-evaluation-for-ce</id><summary type="html"><h1>Evaluating RAG pipelines for conservation evidence</h1><p>This is an idea proposed in 2024 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="mailto:ri301@cam.ac.uk">Radhika Iyer</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in finding and synthesising evidence for conservation interventions. Once we have this evidence, it needs to be synthesised into a form that can be used to inform policy and practice via natural language query interfaces. One way to do this is to use a <a href="https://anil.recoil.org/14768">RAG (Retrieval Augmented Generation)</a> pipeline, which can automatically retrieve relevant information from a large corpus of documents, analyse it to extract key information relevant to CE, and generate a summary of the key findings.</p><p>This project involved involve evaluating the performance of RAG pipelines for conservation evidence, comparing different models, configurations and benchmark sets, and identifying areas for improvement. The goal is to develop a set of best practices for using RAG pipelines in the context of conservation evidence, and to make recommendations for future work in this area.</p>···<li><a href="https://arxiv.org/html/2405.13622v1">Automated Evaluation of Retrieval-Augmented Language Models with Task-Specific Exam Generation</a>, arXiv:2405.13622v1, May 2024</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Effective geospatial code in OCaml</title><link href="https://anil.recoil.org/ideas/effective-geospatial-code" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/effective-geospatial-code</id><summary type="html"><h1>Effective geospatial code in OCaml</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:gp528@cam.ac.uk">George Pool</a>. It is co-supervised with <a class="contact" href="https://mynameismwd.org">Michael Dales</a> and <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p><p>Geospatial data processing is a critical component of many scientific and engineering workflows, from environmental monitoring to urban planning. However, writing geospatial code that scales to multiple cores and makes best use of available memory can be challenging due to the scale of the data involved. To deal with this, we have been developing some domain-specific tools to improve the state of affairs.</p><p><a href="https://github.com/quantifyearth/yirgacheffe">Yirgacheffe</a> is a wrapper to the GDAL library that provides high-level Python APIs that take care of figuring out if datasets overlap, and if vector layers need to be rasterised, and manages memory efficiently for large layers. There is only one problem: we would like to write similar code to this, but in a high level functional language rather than an imperative one!</p>···<li><a href="https://anil.recoil.org/papers/2024-planetary-computing">Planetary computing for data-driven environmental policy-making</a> covers the data processing pipelines we need to integrate into.</li><li><a href="https://anil.recoil.org/papers/2021-pldi-retroeff">Retrofitting effect handlers onto OCaml</a>, PLDI 2021 describes how the effect system in OCaml works.</li><li><a href="https://github.com/ocaml-multicore/eio">EIO</a> is the high-performance direct-style IO library we have been developing for OCaml.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Deep learning for decomposing sound into vector audio</title><link href="https://anil.recoil.org/ideas/decomposing-audio-with-dl" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/decomposing-audio-with-dl</id><summary type="html"><h1>Deep learning for decomposing sound into vector audio</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://pure.qub.ac.uk/en/persons/trevor-agus">Trevor Agus</a>.</p>···<p>Agus, T.R., et al., <a href="https://pubmed.ncbi.nlm.nih.gov/22559384/">Fast recognition of musical sounds based on timbre</a>. J Acoust Soc Am, 2012. 131(5): p. 4124-33.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-3"><p>Famularo, R.L., et al., <a href="https://www.arxiv.org/abs/2409.08997">Biomimetic frontend for differentiable audio processing</a>. [pre-print], 2024.</p>-<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-3">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Crawling grey literature for conservation evidence</title><link href="https://anil.recoil.org/ideas/grey-lit-crawl" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/grey-lit-crawl</id><summary type="html"><h1>Crawling grey literature for conservation evidence</h1><p>This is an idea proposed in 2024 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Shrey Biswas</a> and <a class="contact" href="https://github.com/Kacper-M-Michalik">Kacper Michalik</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in finding and synthesising evidence for conservation interventions. Much of this evidence is published in academic journals, but there is a large body of <a href="https://en.wikipedia.org/wiki/Grey_literature">grey literature</a> that is not indexed in academic databases. This includes reports from NGOs, government agencies, and other organisations that are not peer-reviewed, but can still contain valuable information.</p><p>This project involved developing a web crawler to search for grey literature on conservation interventions, tracking the provenance and license information, and extracting relevant information from these documents. The goal is to make this information more accessible to researchers and practitioners in the field of conservation.</p>-<p><strong>Status:</strong> Paper in preparation, contact me for more details about followups.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Conservation Evidence Copilots</title><link href="https://anil.recoil.org/projects/ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/ce</id><summary type="html"><div><p><p>The <a href="https://conservationevidence.com">Conservation Evidence</a> team at the University···<p>The collaboration originally began in 2022 as part of the Computer Science <a href="https://www.cst.cam.ac.uk/teaching/part-ib/group-projects">1B group projects</a>, when <a class="contact" href="https://www.zoo.cam.ac.uk/directory/bill-sutherland">Bill Sutherland</a>, <a class="contact" href="https://samreynolds.org/">Sam Reynolds</a> and <a class="contact" href="https://profiles.imperial.ac.uk/a.christie">Alec Christie</a> from Zoology proposed a group project related to CE. A team of undergraduate students (including <a class="contact" href="https://github.com/CaoJamie">Jamie Cao</a>) trained an ML model to facilitate searching for papers and indexing relevant articles by species and habitat. After the group project completed with encouraging results, <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and I joined the collaboration and -- with help from the Cambridge <a href="https://osc.cam.ac.uk">Office for Scholarly Communication</a> -- built up a comprehensive (and legal!) corpus of millions of academic papers related to conservation evidence.</p><p>In the summer of 2024 and beyond, we are performing the first cut of training the classifiers across this corpus, and building out an LLM-based co-pilot that can assist human experts. We were joined in the summer of 2024 by three CST undergraduates: <a class="contact" href="mailto:ri301@cam.ac.uk">Radhika Iyer</a>, <a class="contact" href="https://anil.recoil.org/">Shrey Biswas</a> and <a class="contact" href="https://github.com/Kacper-M-Michalik">Kacper Michalik</a> who are building out various elements of the system.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Composable diffing for heterogenous file formats</title><link href="https://anil.recoil.org/ideas/functional-diffs" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/functional-diffs</id><summary type="html"><h1>Composable diffing for heterogenous file formats</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p><p>When dealing with large scale geospatial data, we also have to deal with a variety of file formats, such as CSV, JSON, GeoJSON, or GeoTIFFs, etc. Each of these file formats has its own structure and semantics, and it is often necessary to compare and merge data across different file formats. The conventional solution with source code would be to use a tool such as Git to compare and merge data across different file formats. However, this approach is not always feasible, as it requires the data to be in a text-based format and the data to be structured in a way that can be compared line by line.</p><p>This project explores the design of a composable diffing specification that can compare and merge data across heterogenous file formats. The project will involve designing a domain-specific language for specifying the diffing rules, and implementing a prototype tool that can compare and merge data across different file formats. Crucially, the tool should be composable, meaning that it should be possible to combine different diffing rules to compare and merge data across different file formats.</p>···<li><a href="https://anil.recoil.org/papers/2024-planetary-computing">Planetary computing for data-driven environmental policy-making</a> covers the broader data processing pipelines we need to integrate into.</li><li><em><a href="http://eelco.lempsink.nl/thesis.pdf">&quot;Generic type-safe diff and patch for families of datatypes&quot;</a>, Eelco Lempsink (2009)</em> is a principled library in Haskell for constructing type safe diff and patch functions using GADTs.</li><li><em><a href="https://gioele.io/p/doceng2018/doceng2018-diffi.pdf">diffi: diff improved; a preview</a>, Gioele Barabucci (2018)</em> is a comparison tool whose primary goal is to describe the differences between the content of two documents regardless of their formats.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building bigraphs of the real world</title><link href="https://anil.recoil.org/ideas/bigraphs-real-world" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/bigraphs-real-world</id><summary type="html"><h1>Building bigraphs of the real world</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:ra652@cam.ac.uk">Roy Ang</a>. It is co-supervised with <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>.</p>···-proximity.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Assessing mangrove literature for conservation evidence</title><link href="https://anil.recoil.org/ideas/mangrove-literature-for-ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/mangrove-literature-for-ce</id><summary type="html"><h1>Assessing mangrove literature for conservation evidence</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-thomas-worthington">Tom Worthington</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in finding and synthesising evidence for conservation interventions. Mangrove forests are one of the most threatened ecosystems in the world, and there is a large body of literature on the topic. However, this literature is spread across a wide range of sources, including academic journals, reports, and grey literature, and it can be difficult to identify and synthesise the key findings. Moreover, there is a need to assess the quality of the evidence, perhaps from remote sensing data or field studies, to inform policy and practice.</p>-<p>At the Cambridge Conservation Initiative, there are in-house experts such as <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-thomas-worthington">Tom Worthington</a> developing a platform to integrate evidence on mangrove preservation and restoration. This project will involve assessing the literature found by this project to identify key sources, extract relevant information, and evaluate the quality of the resulting evidence. The goal is to develop a set of best practices for using mangrove literature in the context of conservation evidence, to validate it from the databases collated by domain experts, and to make recommendations for future work in this area.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Accurate summarisation of threats for conservation evidence literature</title><link href="https://anil.recoil.org/ideas/accurate-summarisation-for-ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/accurate-summarisation-for-ce</id><summary type="html"><h1>Accurate summarisation of threats for conservation evidence literature</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:kh807@cam.ac.uk">Kittson Hamill</a>. It is co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in constructing a taxonomy of threats···<li>The <a href="https://docs.ragas.io/en/stable/index.html">Ragas framework</a> for RAG evaluation</li><li><a href="https://arxiv.org/abs/2406.02524v2">CheckEmbed: Effective Verification of LLM Solutions to Open Ended Tasks</a>, arxiv:2406.02524v2, June 2024</li><li><a href="https://arxiv.org/abs/2210.00045">Calibrating Sequence Likelihood Improves Conditional Language Generation</a>, arxiv:2210.00045, September 2000</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 25 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-25.html" rel="alternate"></link><published>2023-12-25T00:00:00Z</published><updated>2023-12-25T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-12-25.html</id><summary type="html"><article><span> Previous: <a href="2023-12-18.html">Mon 18 Dec 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 18 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-18.html" rel="alternate"></link><published>2023-12-18T00:00:00Z</published><updated>2023-12-18T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-12-18.html</id><summary type="html"><article><span> Previous: <a href="2023-12-11.html">Mon 11 Dec 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>NixOS channels</title><link href="https://mort.io/blog/nixos-channels/" rel="alternate"></link><published>2023-12-13T00:00:00Z</published><updated>2023-12-13T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/nixos-channels/</id><summary type="html"><p>I don’t pretend to understand <a href="https://nixos.org/">NixOS</a> configuration fully···-now they’re in my shell history, they’re what I got.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 11 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-11.html" rel="alternate"></link><published>2023-12-11T00:00:00Z</published><updated>2023-12-11T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-12-11.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 4 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-04.html" rel="alternate"></link><published>2023-12-04T00:00:00Z</published><updated>2023-12-04T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-12-04.html</id><summary type="html"><article><span> Previous: <a href="2023-11-27.html">Mon 27 Nov 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Joined the Royal Society fellowships committee</title><link href="https://anil.recoil.org/notes/royal-society-newton" rel="alternate"></link><published>2023-12-02T00:00:00Z</published><updated>2023-12-02T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/royal-society-newton</id><summary type="html"><p>I joined the <a href="https://royalsociety.org">Royal Society</a> <a href="https://royalsociety.org/grants/newton-international/">Newton International Fellowships</a><a href="https://royalsociety.org/people/anil-madhavapeddy-36582/">committee</a> to help with selecting bright new scientists from abroad who wish to conduct research in the UK.</p><p>The Newton International Fellowship (NIF) programme provides support for outstanding early career researchers to make a first step towards developing an independent research career through gaining experience across international borders. The fellowships enable researchers to access expertise, gain new perspectives and build long-lasting collaborative relationships.<cite> -- <a href="https://royalsociety.org/grants/newton-international/">The Royal Society</a></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>PACT Tropical Moist Forest Accreditation Methodology</title><link href="https://anil.recoil.org/news/2023-pact-tmf-2" rel="alternate"></link><published>2023-12-01T00:00:00Z</published><updated>2023-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-pact-tmf-2</id><summary type="html"><p>We have just released the Tropical Moist Forest v2.0 specification, to update the <a href="https://anil.recoil.org/news/2023-pact-tmf-1">v1.1</a> released earlier in the year. There are significant updates to the methodology to better match the scheme described in <a href="https://anil.recoil.org/papers/2023-ncc-permanence">Realizing the social value of impermanent carbon credits</a>.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 27 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-27.html" rel="alternate"></link><published>2023-11-27T00:00:00Z</published><updated>2023-11-27T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-11-27.html</id><summary type="html"><article><span> Previous: <a href="2023-11-20.html">Mon 20 Nov 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 20 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-20.html" rel="alternate"></link><published>2023-11-20T00:00:00Z</published><updated>2023-11-20T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-11-20.html</id><summary type="html"><article><span> Previous: <a href="2023-11-13.html">Mon 13 Nov 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 13 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-13.html" rel="alternate"></link><published>2023-11-13T00:00:00Z</published><updated>2023-11-13T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-11-13.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 6 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-06.html" rel="alternate"></link><published>2023-11-06T00:00:00Z</published><updated>2023-11-06T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-11-06.html</id><summary type="html"><article><span> Previous: <a href="2023-10-30.html">Mon 30 Oct 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>BBC report on the new Cambridge supercomputer ("Dawn") announced at the 2023 AI Summit</title><link href="https://anil.recoil.org/news/48a7ab10-3f49-4978-a00f-c26b64c2cae7-1" rel="alternate"></link><published>2023-11-02T00:00:00Z</published><updated>2023-11-02T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/48a7ab10-3f49-4978-a00f-c26b64c2cae7-1</id><summary type="html"><p>On the BBC briefly about the Dawn supercomputer</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>More on Icons</title><link href="https://digitalflapjack.com/blog/more-on-icons/" rel="alternate"></link><published>2023-11-01T19:12:03Z</published><updated>2023-11-01T19:12:03Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/more-on-icons/</id><summary type="html"><p>This is a sort of follow on to a post I wrote about <a href="/blog/old-icons/">how icons becoming homogenous and hard to distinguish</a>, and inspired by this image <a href="https://twitter.com/flarup/status/1717578963684364578">posted to social media</a> by <a href="https://www.pixelresort.com">Michael Flarup</a> showing the evolution of the macOS default dock over many versions:</p>···-<p>So there's no technology barrier here, just we need to convince product managers that there's a distinction required for making things fit in with an aesthetic and being usable, which requires a different sort of fitting in.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Where on Earth is the Spatial Name System?</title><link href="https://anil.recoil.org/news/2023-hotnets-sns-1" rel="alternate"></link><published>2023-11-01T00:00:00Z</published><updated>2023-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-hotnets-sns-1</id><summary type="html"><p>Paper on spatial networks on DNS at <a href="https://dl.acm.org/doi/10.1145/3626111.3628210">HotNets 2023</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-hotnets-sns.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Nature Climate Change paper on impermanent carbon credits</title><link href="https://anil.recoil.org/news/2023-ncc-permanence-2" rel="alternate"></link><published>2023-11-01T00:00:00Z</published><updated>2023-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-ncc-permanence-2</id><summary type="html"><p>Our paper on valuing impermanent carbon credits has been published at <a href="https://www.nature.com/articles/s41558-023-01815-0">Nature Climate Change</a>. It has received a bunch of press coverage, including <a href="https://phys.org/news/2023-10-offset-approach-tropical-forests-faith.html">phys.org</a>, <a href="https://www.cam.ac.uk/research/news/offset-markets-new-approach-could-help-save-tropical-forests-by-restoring-faith-in-carbon-credits">cam.ac.uk</a>, and <a href="https://www.miragenews.com/new-method-may-boost-trust-in-carbon-credits-1113599/">Mirage</a>.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ncc-permanence.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>First preprint of LIFE biodiversity metric available</title><link href="https://anil.recoil.org/news/2024-life-1" rel="alternate"></link><published>2023-11-01T00:00:00Z</published><updated>2023-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-life-1</id><summary type="html"><p>The first preprint on our new <a href="https://anil.recoil.org/projects/life">LIFE</a> metric for global biodiversity is now available. It is under review, so feedback would be very welcome.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 30 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-30.html" rel="alternate"></link><published>2023-10-30T00:00:00Z</published><updated>2023-10-30T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-10-30.html</id><summary type="html"><article><span> Previous: <a href="2023-10-23.html">Mon 23 Oct 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 23 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-23.html" rel="alternate"></link><published>2023-10-23T01:00:00Z</published><updated>2023-10-23T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-10-23.html</id><summary type="html"><article><span> Previous: <a href="2023-10-16.html">Mon 16 Oct 2023</a> </span>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Cambridge Zero highlights University efforts at Climate Week NYC</title><link href="https://anil.recoil.org/notes/mission-possible" rel="alternate"></link><published>2023-10-18T01:00:00Z</published><updated>2023-10-18T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/mission-possible</id><summary type="html"><p>I was on stage in New York for <a href="https://www.cam.ac.uk/news/cambridge-zero-highlights-university-efforts-at-climate-week-nyc">Mission Possible</a>during <a href="https://www.climateweeknyc.org">NYC Climate Week</a>. I was there with <a class="contact" href="https://www.cisl.cam.ac.uk/directory/emily-shuckburgh">Emily Shuckburgh</a> and we met with a lot of Cambridge alumni whoare all engaged with climate change related activities -- either directly in their careers, or through a side interest.</p><p>The major highlights on the discussions with alumni centred around agency: a lot of them were wondering how to combine the evidence coming···careers, and so the University helping to glue this together would potentially result in valuable actions that might not otherwise come together.</p><p>This reminded me strongly of the discussions we had in Pembroke a little while back when <a class="contact" href="https://www.cisl.cam.ac.uk/directory/emily-shuckburgh">Emily Shuckburgh</a> chaired my talk about &quot;Who's in Charge?&quot; for the <a href="https://www.pem.cam.ac.uk/college/corporate-partnership/corporate-partnership-events/william-pitt-seminars/17th-william-pitt">William Pitt Seminar</a> where we had very similar discussions at dinner afterwards.</p>-<p><em>(See also <a href="https://www.zero.cam.ac.uk/who-we-are/blog/news/cambridge-zero-takes-centre-stage-climate-week-nyc">Cambridge Zero</a> notes on the event, and thanks to <a href="https://www.cisl.cam.ac.uk/">CISL</a>.)</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 16 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-16.html" rel="alternate"></link><published>2023-10-16T01:00:00Z</published><updated>2023-10-16T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-10-16.html</id><summary type="html"><article>···manually cherry picked examples in a prototype: <a href="https://github.com/RyanGibb/opam-lang-repo-nix">opam-lang-repo-nix</a>.</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 9 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-09.html" rel="alternate"></link><published>2023-10-09T01:00:00Z</published><updated>2023-10-09T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/2023-10-09.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Information Flow Tracking for Heterogeneous Compartmentalized Software</title><link href="https://anil.recoil.org/news/2023-raid-deluminator-1" rel="alternate"></link><published>2023-10-01T01:00:00Z</published><updated>2023-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-raid-deluminator-1</id><summary type="html"><p>Paper on DIFC Deluminator interface at <a href="https://dl.acm.org/doi/10.1145/3607199.3607235">RAID 2023</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-raid-deluminator.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Enabling Lightweight Privilege Separation in Applications with MicroGuards</title><link href="https://anil.recoil.org/news/2023-acns-microguards-1" rel="alternate"></link><published>2023-10-01T01:00:00Z</published><updated>2023-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-acns-microguards-1</id><summary type="html"><p>Paper on microgrounds memory API at <a href="https://link.springer.com/chapter/10.1007/978-3-031-41181-6_31">ACNSW</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-acns-microguards.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional Programming for the Planet</title><link href="https://anil.recoil.org/news/981c00b5-32c0-4cac-a387-6c945dfa9934-1" rel="alternate"></link><published>2023-09-05T01:00:00Z</published><updated>2023-09-05T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/981c00b5-32c0-4cac-a387-6c945dfa9934-1</id><summary type="html"><p>Keynoted at ICFP 2023 on Functional Programming for the Planet</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>State of the OCaml Platform 2023</title><link href="https://anil.recoil.org/news/2023-ocaml-platform-1" rel="alternate"></link><published>2023-09-01T01:00:00Z</published><updated>2023-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-ocaml-platform-1</id><summary type="html"><p>We deliver the annual presentation about the OCaml Platform in the OCaml Workshop at ICFP 2023.</p><p>This paper reflects on a decade of progress and developments within the OCaml Platform, from its inception in 2013 with the release of opam 1.0, to today where it stands as a robust toolchain for OCaml developers. We review the last three years in detail, emphasizing the advancements and innovations that have shaped the OCaml development landscape and highlighting key milestones such as the migration to Dune as the primary build system, and the development of a Language Server Protocol (LSP) server for OCaml.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ocaml-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Scheduling for Reduced Tail Latencies in Highly Utilised Datacenters</title><link href="https://anil.recoil.org/ideas/murmuration" rel="alternate"></link><published>2023-09-01T01:00:00Z</published><updated>2023-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/murmuration</id><summary type="html"><h1>Scheduling for Reduced Tail Latencies in Highly Utilised Datacenters</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.cl.cam.ac.uk/~sv440/">Smita Vijayakumar</a>. It was co-supervised with <a class="contact" href="https://www.cst.cam.ac.uk/people/ek264">Evangelia Kalyvianaki</a>.</p><p>Modern datacenters have become the backbone for running diverse workloads that increas-···-completion times.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Eio 1.0 – Effects-based IO for OCaml 5</title><link href="https://anil.recoil.org/news/2023-ocaml-eio-1" rel="alternate"></link><published>2023-09-01T01:00:00Z</published><updated>2023-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-ocaml-eio-1</id><summary type="html"><p>An update on the OCaml EIO library at the OCaml Workshop 2023</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ocaml-eio.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OneDrive and NixOS</title><link href="https://mort.io/blog/nixos-onedrive/" rel="alternate"></link><published>2023-08-22T01:00:00Z</published><updated>2023-08-22T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/nixos-onedrive/</id><summary type="html"><p>https://github.com/abraunegg/onedrive/blob/master/docs/SharePoint-Shared-Libraries.md<p>FWIW I also use that package on a NixOS system (via a Nix package that can presumably be installed on other systems if you add nix as a package manager), https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNixOS%2Fnixpkgs%2Fblob%2Fmaster%2Fnixos%2Fmodules%2Fservices%2Fnetworking%2Fonedrive.nix&amp;data=05%7C02%7Crmm1002%40universityofcambridgecloud.onmicrosoft.com%7C8792d760606b4a3e80d108dcbd47b53a%7C49a50445bdfa4b79ade3547b4f3986e9%7C1%7C0%7C638593362895323916%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;sdata=qPJyO0hTLRnrkbssZ0Y4cLfhaygDiEQtlQ0pwAjgMwM%3D&amp;reserved=0.</p><p>I have successfully used it with the University and my startup’s tenancies (both personal OneDrive and enterprise Sharepoint sites) simultaneously – this was fairly simple in the end but I recall it took a while to do the token dance to get the necessary tokens, and then to get all the runes right. In short it was something like:</p>···<h1 id="for-startup-sharepoint-sites"><a class="zola-anchor" href="https://mort.io/blog/nixos-onedrive/#for-startup-sharepoint-sites">for startup Sharepoint sites</a></h1>-drive_id = “…” # rune found per instructions Robert pointed to I think</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Pandas vs Efficiency</title><link href="https://digitalflapjack.com/blog/pandas-vs-efficiency/" rel="alternate"></link><published>2023-08-07T11:21:45Z</published><updated>2023-08-07T11:21:45Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/pandas-vs-efficiency/</id><summary type="html"><p>As part of my role at the <a href="https://4c.cst.cam.ac.uk">Cambridge Center for Carbon Credits (4C)</a>, working closely with ecologists in processing of data, I've become an accidental data scientist, by which I mean instead of loading CSV files directly I now use <a href="https://pandas.pydata.org">pandas</a>. Pandas is a popular library that makes working with large arrays of data easier. Unlike <a href="https://numpy.org">numpy</a>, which is there to make it easy to process data in multidimensional arrays, pandas works one abstraction higher, giving columns names and treating the data as tabular, rather than just raw numbers. But similar to numpy, it provides nice syntax to help you work with that data without worrying about individual elements, you tend to work at that tabular level, and that makes it particularly powerful for someone who isn't a native programmer, rather someone who is a domain expert in whatever they have data about who is trying to process that data to derive a new insight.</p><p>I'm quite a fan of Numpy: Numpy makes it simple to reason about large amounts of data without worrying about each element,and at the same time it is really quite efficient at doing so. I recently tried rewriting some Python code that used numpy to a compiled language thinking it'd be faster, but under the hood numpy is using compiled code already to do vectorized operations, so is actually quite efficient, and my native code version was as a result no faster and harder to read.</p><p>So given it's popularity, and the fact that it uses Numpy under the hood, I'd assumed that pandas would similarly provide that double win of simplicity of expression with efficiency of computation, but I was mistaken: using pandas to process data turned out to be very inefficient. In this post I'm going to walk through a particular problem I was trying to solve, and then look into how I managed to speed it up, and then worry about what this means for the regular data-scientist that isn't also steeped in computer-science knowledge.</p>···<p>There's two readings of this post. Firstly, if you're stuck trying to improve the performance of your pandas code, then consider exporting it to numpy if you're doing bulk calculations on the data rather than just dealing with columns etc. It'll save you some time and memory and your electricity bill will be lower. But then it'd also be valid to say for this kind of task you might also want to look at tools like <a href="https://sparkbyexamples.com">Spark</a> and <a href="https://dask.org/">Dask</a> which do some of the lifting for you, at the expense of learning yet another framework properly before it'll really be able to help you.</p><p>But secondly, and perhaps more interestingly, is how could this be made such that if you're an expert in a domain that isn't computer science, how do you figure this stuff out? Or perhaps from my perspective: how, as someone making libraries for ecologists to use, how do I make it so they don't get into this trap? Perhaps it'd be better if pandas doesn't have the apply function to loop over the data, and it just had the &quot;dump data to numpy&quot; function instead? Providing nothing would have helped me, as I already know numpy, but that might have just put off other data scientists?</p><p>Or put another way, does everyone doing significant data science in all domains but one need to have a part-time computerist on their team? Should we just acknowledge that this stuff requires some under-the-hood systems knowledge to get right, and so the way forward is a pairing of experts. You hope that most the time the tools do good, but at some point you want to have a domain expert review things? This falls down I imagine when it comes to funding - who wants to add another person to the project in the name of efficiency when you can kludge by and your budget is already tight?</p>-<p>I don't know what the answer is, but I do know that having to apply me to even a small set of ecologists doesn't scale, and given the state of the climate we need to be enabling as many ecologists as we can. So with projects like <a href="https://github.com/carboncredits/yirgacheffe/">yirgacheffe</a> I plan to continue trying to do &quot;the right thing&quot; to empower and enable my ecologist colleagues, but then perhaps I need to learn to explicitly signal when my way isn't the best way and perhaps expert review is needed.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Why using Slack is bad for GeoTIFF Rasters</title><link href="https://digitalflapjack.com/blog/slack-bad-for-gis-rasters/" rel="alternate"></link><published>2023-08-03T14:48:18Z</published><updated>2023-08-03T14:48:18Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/slack-bad-for-gis-rasters/</id><summary type="html"><p>In the past <a href="/blog/some-notes-on-processing-and-display-geospatial-data/">I've written about</a> how <a href="https://www.ogc.org/standard/geotiff/">GeoTIFF</a> is one of the most common datas formats used for geospatial data. A GeoTIFF is just a standard TIFF image with a few extra fields on it that mean geospatial tools such as <a href="https://qgis.org/en/site/">QGIS</a> or libraries such as <a href="https://gdal.org">GDAL</a> know what geographic region this data is referring to, and what map projection system its stored relative to. For example, here is a GeoTIFF I generated showing me where in Sweden you might find moose (meese?):</p>···<p>Now, on one hand this isn't really progress, as I still don't know what settings on the GeoTIFF cause Slack to render a review versus not - I have the same problem and just a quicker way to diagnose it perhaps. But then on the other hand at least I can diagnose it now: if I send a colleague a GeoTIFF and it renders a preview, it is now ruined. I assume that if you have a preview and you download the image again then you get a new image from the original data rather than the one you uploaded. Or perhaps, as my colleague <a href="https://patrick.sirref.org">Patrick</a> pointed out, once Slack decides to treat it like an image it <a href="https://techcrunch.com/2020/05/11/slack-strips-location-data/">strips out metadata for security reasons</a> - but then if that's the case its poor that I can get images through that don't get cleaned up like that.</p><p>It does remind me a bit of the early days of mobile networks, where your mobile operator would rewrite images you downloaded on their servers to be more highly compressed, so as to save them bandwidth. You hear less of that these days, and I have checked the actual image data, and I've not yet found one where the data itself was changed, just the metadata.</p>-<p>Slack fiddling in this way me cost the better part of days work, because we didn't spot that it had mangled one of our datasets and so we had confused results, and so it's particularly vexing that I can't find a root cause, but at least I have a work around now: I've taken to putting any GeoTIFFs I send to colleagues into a zip file now - not to save space (given the GeoTIFFs are compressed putting them in a zip often makes them slightly larger), but rather to stop Slack fiddling with them. Not the best, but if I do it as a matter of course, I never have to think about this again, at least until Slack decide to fiddle with zip files.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Meta Properties of Financial Smart Contracts</title><link href="https://anil.recoil.org/ideas/metaproperties-for-smart-contracts" rel="alternate"></link><published>2023-08-01T01:00:00Z</published><updated>2023-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/metaproperties-for-smart-contracts</id><summary type="html"><h1>Meta Properties of Financial Smart Contracts</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://derekhsorensen.com">Derek Sorensen</a>. It was co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a>.</p>···-contracts. The formal tools presented are written in Coq.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Computational Models for Scientific Exploration</title><link href="https://anil.recoil.org/ideas/computational-scientific-methods" rel="alternate"></link><published>2023-08-01T01:00:00Z</published><updated>2023-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/computational-scientific-methods</id><summary type="html"><h1>Computational Models for Scientific Exploration</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>. It is co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a>.</p>···<li>There is an extensive amount of source code up at <a href="https://github.com/quantifyearth">https://github.com/quantifyearth</a>and <a href="https://github.com/carboncredits">https://github.com/carboncredits</a> which forms parts of our pipeline.</li><li>See the related ideas for some smaller scale projects you can engage with.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Preprint on the social value of impermanent carbon credits</title><link href="https://anil.recoil.org/news/2023-ncc-permanence-1" rel="alternate"></link><published>2023-07-01T01:00:00Z</published><updated>2023-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-ncc-permanence-1</id><summary type="html"><p>We have uploaded a preprint of our <a href="https://anil.recoil.org/projects/4c">4C</a> paper on valuing impermanent carbon credits, by using the <a href="https://en.wikipedia.org/wiki/Social_cost_of_carbon">Social Cost of Carbon</a> as a basis for a discount function into the future. Comments and feedback are most welcome.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ncc-permanence.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml wins the ACM Programming Language Software award</title><link href="https://anil.recoil.org/notes/acm-sigplan-award" rel="alternate"></link><published>2023-06-19T01:00:00Z</published><updated>2023-06-19T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/acm-sigplan-award</id><summary type="html"><p>I was honoured to be included in the OCaml team that won the <a href="https://www.cst.cam.ac.uk/news/acm-programming-languages-software-award-goes-ocaml-researchers">ACM Programming Languages Software Award for 2023</a>.</p><p>The Association for Computing Machinery (ACM), the world's largest association of computing professionals, today gave the 2023 SIGPLAN Award to a group of developers for their work on the functional programming language OCaml.</p><p>The award was presented at the annual SIGPLAN Programming Language Design and Implementation Conference to a group of researchers and developers including our colleague Anil Madhavapeddy, Professor of Planetary Computing here.</p>···<p>The OCaml Compiler Distribution is the reference implementation of the OCaml language, a dialect of ML that aims to be pragmatic, both in language features and implementation, encouraging a simple programming style that yields good performance and usability. It has a large user base in industry, research, and education throughout the world, and was used to implement a number of other impactful systems, notably in verification: Coq proof assistant, CompCert verified compiler, Why3 verified programming environment, Frama-C, Astrée and Gillian static analyzers, Infer, Hack and Flow projects at Meta, SLAM/SDV and F* at Microsoft, etc.<cite>-- <a href="https://www.sigplan.org/Awards/Software/">ACM SIGPLAN</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Developing OCaml with Nix</title><link href="https://ryan.freumh.org/ocaml-nix.html" rel="alternate"></link><published>2023-06-07T01:00:00Z</published><updated>2023-06-07T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/ocaml-nix.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>PACT Tropical Moist Forest Accreditation Methodology</title><link href="https://anil.recoil.org/news/2023-pact-tmf-1" rel="alternate"></link><published>2023-06-01T01:00:00Z</published><updated>2023-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-pact-tmf-1</id><summary type="html"><p>We have just published the Tropical Moist Forest v1.0 specification, which is a detailed description of the methodology we are using for counterfactual dynamic baselines to calculate the additionality, leakage and permanence behind REDD+ projects. I explained some of the background behind this in a seminar last year.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Build your own Stacks Project in 10 minutes</title><link href="https://www.forester-notes.org/jms-0052/" rel="alternate"></link><published>2023-05-14T01:00:00Z</published><updated>2023-05-14T01:00:00Z</updated><author><name>Jon Sterling</name></author><id>https://www.forester-notes.org/jms-0052/</id><summary type="html"><p><a href="https://www.forester-notes.org/stacks-project/">The Stacks project</a> is the most successful scientific hypertext project in history. Its goal is to lay the foundations for the theory of algebraic stacks; to facilitate its scalable and sustainable development, several important innovations have been introduced, with the <em>tags</em> system being the most striking.</p><blockquote>Each tag refers to a unique item (section, lemma, theorem, etc.) in order for this project to be referenceable. These tags don't change even if the item moves within the text. (<a href="https://stacks.math.columbia.edu/tags">Tags explained</a>, <a href="https://www.forester-notes.org/stacks-project/">The Stacks Project</a>).</blockquote><p>Many working scientists, students, and hobbyists have wished to create their own tag-based hypertext knowledge base, but the combination of tools historically required to make this happen are extremely daunting. Both the <a href="https://www.forester-notes.org/stacks-project/">Stacks project</a> and <a href="https://www.forester-notes.org/kerodon/">Kerodon</a> use a cluster of software called <a href="https://www.forester-notes.org/gerby/">Gerby</a>, but bitrot has set in and it is <a href="https://github.com/gerby-project/plastex/issues/60">no longer possible</a> to build its dependencies on a modern environment without significant difficulty, raising questions of longevity.</p><p>Moreover, <a href="https://www.forester-notes.org/gerby/">Gerby</a>’s deployment involves running a database on a server (in spite of the fact that almost the entire functionality is static HTML), an architecture that is incompatible with the constraints of the everyday working scientist or student who knows <em>at most</em> how to upload static files to their university-provided public storage. The recent experience of the <a href="https://ncatlab.org/nlab/show/HomePage">nLab</a>’s pandemic-era hiatus and near death experience has demonstrated with some urgency the pracarity faced by any project relying heavily on volunteer system administrators.</p>···<p>I am eager to see the new <a href="https://www.forester-notes.org/tfmt-000R/">forests</a> that people create using <a href="https://www.forester-notes.org/index/">Forester</a>. I am happy to offer personal assistance via the <a href="https://lists.sr.ht/~jonsterling/forester-discuss">mailing list</a>.</p><p>Many aspects of <a href="https://www.forester-notes.org/index/">Forester</a> are in flux and not fully documented; it will often be instructive to consult the source of existings <a href="https://www.forester-notes.org/tfmt-000R/">forests</a>, such as <a href="https://git.sr.ht/~jonsterling/forester-notes.org">this one</a>.</p><p>Have fun, and be sure to send me links to your <a href="https://www.forester-notes.org/tfmt-000R/">forests</a> when you have made them!</p>-</section></summary><category term="Forester Blog"></category></entry><entry><title>Credit credibility threatens forests</title><link href="https://anil.recoil.org/news/2023-carbon-credibility-1" rel="alternate"></link><published>2023-05-01T01:00:00Z</published><updated>2023-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2023-carbon-credibility-1</id><summary type="html"><p>Our perspective in <a href="https://science.org">Science</a> magazine appeared this week on the credibility of carbon credits and its importance for tropical forest protection.</p><p>Addressing global warming requires increased investment in conserving and restoring carbon-dense natural habitats. Some companies that emit carbon have turned to certified carbon credits to offset their environmental impact. However, the effectiveness of carbon credits depends on the methods used to quantify them. If carbon credits do not accurately represent their environmental benefits, relying on them could exacerbate climate change. To ensure that carbon credits are robust, the methods used to calculate them must be improved.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-carbon-credibility.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>WSL2 / Windows 11</title><link href="https://mort.io/blog/windows-wsl2/" rel="alternate"></link><published>2023-03-13T00:00:00Z</published><updated>2023-03-13T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/windows-wsl2/</id><summary type="html"><p>I naively thought I could just use WSL2 on Windows on my new laptop. But it<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">wsl</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>set-default-version</span> 2</span>···<li><a href="https://stephenreescarter.net/how-to-shrink-a-wsl2-virtual-disk/">https://stephenreescarter.net/how-to-shrink-a-wsl2-virtual-disk/</a></li><li><a href="https://www.linkedin.com/pulse/acceso-wsl2-desde-windows-con-samba-manuel-nicol%C3%A1s-ortu%C3%B1o/">https://www.linkedin.com/pulse/acceso-wsl2-desde-windows-con-samba-manuel-nicol%C3%A1s-ortu%C3%B1o/</a></li>-</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>Leveraging Scientific Innovation and AI to Scale Carbon Markets</title><link href="https://anil.recoil.org/news/ce64a918-ff52-4116-b1ee-256f08e6e7f1-1" rel="alternate"></link><published>2023-03-07T00:00:00Z</published><updated>2023-03-07T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/ce64a918-ff52-4116-b1ee-256f08e6e7f1-1</id><summary type="html"><p>Discussion with Mantle Labs about carbon credits</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A Case for Planetary Computing</title><link href="https://anil.recoil.org/news/2024-planetary-computing-1" rel="alternate"></link><published>2023-03-01T00:00:00Z</published><updated>2023-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2024-planetary-computing-1</id><summary type="html"><p>Preprint of planetary computing paper</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-planetary-computing.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml operators</title><link href="https://mort.io/blog/ocaml-operators/" rel="alternate"></link><published>2023-02-26T00:00:00Z</published><updated>2023-02-26T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/ocaml-operators/</id><summary type="html"><p>An <a href="https://www.brendanlong.com/ocaml-operator-cheatsheet.html">OCaml operator-<a href="https://ocaml.org/">OCaml</a> operators that I have found useful.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Software folklore</title><link href="https://mort.io/blog/software-folklore/" rel="alternate"></link><published>2023-02-26T00:00:00Z</published><updated>2023-02-26T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/software-folklore/</id><summary type="html"><p>Truly cursed bugs that have become <a href="http://beza1e1.tuxen.de/lore/">software-folklore</a>.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Species distribution modelling using CNNs</title><link href="https://anil.recoil.org/ideas/sdms-with-cnns" rel="alternate"></link><published>2023-02-01T00:00:00Z</published><updated>2023-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/sdms-with-cnns</id><summary type="html"><h1>Species distribution modelling using CNNs</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/emorris7">Emily Morris</a>. It was co-supervised with <a class="contact" href="https://coomeslab.org">David A Coomes</a>.</p><p>The goal of this project is to compare the performance of <a href="https://biodiversityinformatics.amnh.org/open_source/maxent/">MaxEnt</a> techniques to the performance of a CNN model for the task of species distribution···<p>To evaluate it, we will focus on <a href="https://en.wikipedia.org/wiki/Protea">proteas</a> for the species distribution modeling task. We have two observation data sets: the Protea Atlas and iNaturalist. The work for the CNN is largely based on the work doneby <a href="https://europepmc.org/article/ppr/ppr533361">Gillespie et al</a>, who present a model that takes in an RGB image and anembedding for environment variables and predicts which species are present in the image. This method performs multispecies presence modeling and the use of other species is somewhat central to the method. Including other species gives training examples which are pseudo-absences for some species, circumventing the issue of the lack of negative data.</p>-<p>This project was conducted successfully, and presented at the <a href="https://www.climatechange.ai/events/neurips2024">CCAI Workshop</a> at NeurIPS as '<a href="https://anil.recoil.org/papers/2024-sdm-sa">Towards Scalable Deep Species Distribution Modelling using Global Remote Sensing</a>'.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>How to update a Tezos Smart-Contract</title><link href="https://digitalflapjack.com/blog/tezos-contract-upgrades/" rel="alternate"></link><published>2023-01-25T11:28:59Z</published><updated>2023-01-25T11:28:59Z</updated><author><name>Unknown</name></author><id>https://digitalflapjack.com/blog/tezos-contract-upgrades/</id><summary type="html"><h1>How to update a Smart-Contract</h1><p>The <a href="https://4c.cst.cam.ac.uk">Cambridge Center for Carbon Credits</a> (4C) has been looking at using a distributed ledger, aka blockchain, to make a public, immutable, verifiable store of information about carbon-offsets as a way of providing traceability into the validity of that offset. Whilst blockchains are not my domain of expertise, I was tasked earlier this year with getting the project's smart contract ready for production, being the experienced generalist software-engineer on the team. I've <a href="https://digitalflapjack.com/blog/getting-started-with-tezos/">previously written up</a> some of the trials of getting started with the Tezos blockchain platform from a software-engineering perspective, and this post is more of the same, but focussed on one particular area: how do you ship updates to your smart-contract once you've shipped it?</p><p>The problem is this: any bit of software evolves over time, either to fix bugs, refine existing features in the light of new knowledge, or to add support for new functionality. However, one of the reasons people use blockchains is because they are public immutable data-structures, which can only be appended and never changed: this means that the smart-contract code you instantiated to run on the blockchain has the same properties of immutability, by virtue of being stored in that same blockchain on which it is running. This leaves us in a bit of a quandary.</p><p>This post looks then both at why did people build a system that is so hard to upgrade (which to me initially wasn't as obvious as I'd assumed), and then looks at the different strategies that people use for upgrading smart-contracts. As before, this article is very much focussed on <a href="https://tezos.com">Tezos</a> (who, for clarity, are one of 4C's funders), but I have dragged in references from the <a href="https://ethereum.org/">Ethereum</a> blockchain this time, as they have more documentation around upgrades that I was able to learn from; Tezos is still relatively young, and as such its documentation is not quite as rich as Ethereum's.</p>···<p>There is no one size fits all solution, but hopefully by using the above set of questions you can narrow down the set of patterns to the one that best fits your situation.</p>-<p>My thanks to my 4C colleagues who helped with this: Patrick Ferris, Sadiq Jaffer, Srinivasan Keshav, Anil Madhavapeddy, and Derek Sorensen. Additional thanks to <a href="https://twitter.com/echa_io">Alexander Eichhorn</a> on the insights around how indexers work.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Bibliography Management</title><link href="https://ryan.freumh.org/bibliography-management.html" rel="alternate"></link><published>2023-01-17T00:00:00Z</published><updated>2023-01-17T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/bibliography-management.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>OCaml.org: recapping 2022 and queries on the Fediverse</title><link href="https://anil.recoil.org/notes/recapping-ocaml-22" rel="alternate"></link><published>2023-01-02T00:00:00Z</published><updated>2023-01-02T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/recapping-ocaml-22</id><summary type="html"><p>I recap the OCaml community progress in 2022, which covers a number of bases ranging from-the release of OCaml 5.0, the launch of a new website with integrated documentation for 20000+ packages, prototyping new developer workflows that are better integrated into editors, and the launch of ActivityPub based services such as <a href="https://watch.ocaml.org">https://watch.ocaml.org</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The role of urban vegetation in human health</title><link href="https://anil.recoil.org/ideas/urban-vegetation" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/urban-vegetation</id><summary type="html"><h1>The role of urban vegetation in human health</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://ancazugo.github.io/">Andres Zuñiga-Gonzalez</a>. It is co-supervised with <a class="contact" href="https://www.arct.cam.ac.uk/people/dr-ronita-bardhan">Ronita Bardhan</a>.</p>···<li>Read more in the first abstract: <a href="https://anil.recoil.org/papers/2024-green-urban-eq">Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications</a></li><li>There will be a talk at <a href="https://www.conftool.pro/biospace25/sessions.php">Biospace 2025</a> at the European Space Agency from <a class="contact" href="https://ancazugo.github.io/">Andres Zuñiga-Gonzalez</a> and <a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> in Feb 2025</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reverse emulating agent-based models for policy simulation</title><link href="https://anil.recoil.org/ideas/rev-abm" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/rev-abm</id><summary type="html"><h1>Reverse emulating agent-based models for policy simulation</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.linkedin.com/in/pedro-marques-sousa/">Pedro Sousa</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>Governments increasingly rely on simulation tools to inform policy design. Agent-based models (ABMs) simulate complex systems to study the emergent phenomena of individual behaviours and interactions in agent populations. However, these ABMs force an iterative, time-consuming, unmethodical parameter tuning of key policy &quot;levers&quot; (or input parameters) to steer the model towards the envisioned outcomes. To unlock a more natural workflow, this project investigates <em>reverse emulation</em>, a novel approach that streamlines policy design using probabilistic machine learning to predict parameter values that yield the desired policy outcomes.</p>···<li>Publication to follow as it is currently being written up. The project was awarded the &quot;<a href="https://www.linkedin.com/feed/update/urn:li:activity:7228682518596603904/">2024 Highly Commended M.Phil Project</a>&quot; commendation from the Computer Science department.</li>-<p>This project was a followup to one in the previous year by <a class="contact" href="https://anil.recoil.org/">Sharan Agrawal</a> on <a href="https://anil.recoil.org/ideas/differentiable-abm">Scalable agent-based models for optimized policy design</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Remote Sensing of Nature</title><link href="https://anil.recoil.org/projects/rsn" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/rsn</id><summary type="html"><div><p><p>Measuring the world's forest carbon and biodiversity is made possible by remote···human health. Read more about our work in &quot;<a href="https://anil.recoil.org/papers/2024-green-urban-eq">Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications</a>&quot; and the projectin <a href="https://anil.recoil.org/ideas/urban-vegetation">The role of urban vegetation in human health</a>.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mapping LIFE on Earth</title><link href="https://anil.recoil.org/projects/life" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/life</id><summary type="html"><div><p><p>Human-driven habitat loss is recognised as the greatest cause of biodiversity loss, but we lack robust, spatially explicit metrics quantifying the impacts of anthropogenic changes in habitat extent on species' extinctions. LIFE is our new metric that uses a persistence score approach that combines ecologies and land-cover data whilst considering the cumulative non-linear impact of past habitat loss on species' probability of extinction. We apply large-scale computing to map ~30k species of terrestrial vertebrates and provide quantitative estimates of the marginal changes in the expected number of extinctions caused by converting remaining natural vegetation to agriculture, and also by restoring farmland to natural habitat. We are also investigating many of the conservation opportunities opened up via its estimates of the impact on extinctions of diverse actions that change land cover, from individual dietary choices through to global protected area development.</p>···<p>Agriculturally-driven habitat degradation and destruction is the biggest threat to global biodiversity, and so an exciting line of work that <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball">Thomas Ball</a> has been leading is to tie the LIFE metric with food consumption and production data and provenance modelling in order to figure out the impact of what we eat on species extinctions. The preprint on the FOOD metric (<a href="https://anil.recoil.org/papers/2024-food-life">Quantifying the impact of the food we eat on species extinctions</a>) shows that despite marked differences in per-capita impacts across countries, there are consistent patterns that could be leveraged for mitigating harm to biodiversity. We're continuing to work on refining this data and analysis, particularly via higher resolution supply chain datasets and crop yield data.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Interspatial Networking with DNS</title><link href="https://anil.recoil.org/ideas/interspatial-networking" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/interspatial-networking</id><summary type="html"><h1>Interspatial Networking with DNS</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>. It is co-supervised with <a class="contact" href="mailto:jon.crowcroft@cl.cam.ac.uk">Jon Crowcroft</a>.</p>···<li><a href="https://anil.recoil.org/papers/2023-hotnets-sns">Where on Earth is the Spatial Name System?</a></li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Improving Resilience of ActivityPub Services</title><link href="https://anil.recoil.org/ideas/activitypub-resilience" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/activitypub-resilience</id><summary type="html"><h1>Improving Resilience of ActivityPub Services</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Gediminas Lelešius</a>.</p>distributed social networking protocol &quot;ActivityPub&quot;, by caching the content on···<li>The <a href="https://github.com/gediminasel/activitypub-resilience">dissertation is on GitHub</a>.</li><li>The modified <a href="https://github.com/gediminasel/mastodon-resilience">Mastodon source code</a>.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Assessing high-performance lightweight compression formats for geospatial computation</title><link href="https://anil.recoil.org/ideas/compressive-geospatial" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/compressive-geospatial</id><summary type="html"><h1>Assessing high-performance lightweight compression formats for geospatial computation</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/omarathon">Omar Tanner</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p>···<li><a href="https://github.com/omarathon/mres/blob/32bcdd4413e951933c40f037c0c595ebbebe3aca/mres_project.pdf">Dissertation PDF</a> for the <a href="https://cdt.sensors.cam.ac.uk/sd-classification/2023-student-cohort">Sensors CDT MRes</a>.</li><li><a href="https://github.com/omarathon/compression-geospatial">Source Code</a></li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Hacking on the Remarkable 2</title><link href="https://ryan.freumh.org/remarkable2.html" rel="alternate"></link><published>2022-12-17T00:00:00Z</published><updated>2022-12-17T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/remarkable2.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Nix</title><link href="https://ryan.freumh.org/nix.html" rel="alternate"></link><published>2022-12-14T00:00:00Z</published><updated>2022-12-14T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/nix.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Hillingar: MirageOS Unikernels on NixOS</title><link href="https://ryan.freumh.org/hillingar.html" rel="alternate"></link><published>2022-12-14T00:00:00Z</published><updated>2022-12-14T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/hillingar.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Financing Forests: A Credible Approach towards Halting Tropical Deforestation</title><link href="https://anil.recoil.org/news/bc9da6fc-9419-4f18-9db9-c13b1a4a859f-1" rel="alternate"></link><published>2022-11-16T00:00:00Z</published><updated>2022-11-16T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/bc9da6fc-9419-4f18-9db9-c13b1a4a859f-1</id><summary type="html"><p>Wednesday seminar on financing forests using carbon credits</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>17th William Pitt Seminar - Who's in Charge?</title><link href="https://anil.recoil.org/news/a26475b5-c169-478e-b88e-be5cd1f2aff8-1" rel="alternate"></link><published>2022-11-01T00:00:00Z</published><updated>2022-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/a26475b5-c169-478e-b88e-be5cd1f2aff8-1</id><summary type="html"><p>I opened the 17th William Pitt Seminar at Pembroke College on climate change with a brief talk about the status of the world's biodiversity, and how we have more agency than ever before to take matters into our own hands.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The 2nd ed of Real World OCaml is available in shops</title><link href="https://anil.recoil.org/news/rwo-2" rel="alternate"></link><published>2022-10-01T01:00:00Z</published><updated>2022-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/rwo-2</id><summary type="html"><p>I'm delighted to report that the second edition of <a href="https://realworldocaml.org">Real World OCaml</a> is now available from Cambridge University Press! It's also freely available <a href="https://realworldocaml.org">online</a>, and CUP also kindly agreed that the PDF version could be freely available online thanks to sponsorship from <a href="https://tarides.com">Tarides</a>. <span class="morewords">[…<a href="https://anil.recoil.org/news/rwo-2">105 words</a>]</span></p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Homogeneous Builds with OBuilder and OCaml</title><link href="https://anil.recoil.org/news/2022-oud-ocurrent-1" rel="alternate"></link><published>2022-09-01T01:00:00Z</published><updated>2022-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2022-oud-ocurrent-1</id><summary type="html"><p>Paper on our incremental computation DSL ocurrent presented in OCaml Workshop 2022</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Nim</title><link href="https://ryan.freumh.org/nim.html" rel="alternate"></link><published>2022-08-30T01:00:00Z</published><updated>2022-08-30T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/nim.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>A DSL for decentralised identity in OCaml</title><link href="https://anil.recoil.org/ideas/dsl-for-decentralised-id" rel="alternate"></link><published>2022-08-01T01:00:00Z</published><updated>2022-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/dsl-for-decentralised-id</id><summary type="html"><h1>A DSL for decentralised identity in OCaml</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.linkedin.com/in/michal-mgeladze-arciuch">Michał Mgeładze-Arciuch</a>. It was co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>···contact the author for a copy of it. <a class="contact" href="https://www.linkedin.com/in/michal-mgeladze-arciuch">Michał Mgeładze-Arciuch</a> has subsequently founded <a href="https://www.czechtradeoffices.com/se/news/czech-startup-yoneda-labs-raises-over-$100-million-to-revolutionize-chemical-reactions-with-ai">Yoneda-reactions</a>!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Trusted Carbon Credits</title><link href="https://anil.recoil.org/news/4c-1" rel="alternate"></link><published>2022-05-06T01:00:00Z</published><updated>2022-05-06T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/4c-1</id><summary type="html"><p>With the recent controversies over low-integrity carbon credits, I spoke to Vox magazine<p>&quot;The problem with the current markets is nothing to do with how we can trade these more effectively,&quot; said Anil Madhavapeddy, who is an associate professor of computer science and technology at Cambridge University and the director of the Cambridge Center for Carbon Credits. &quot;We just do not have enough supply.&quot;···<p>The Cambridge Centre for Carbon Credits is an initiative I started with <a class="contact" href="https://www.zoo.cam.ac.uk/directory/andrew-balmford">Andrew Balmford</a>, <a class="contact" href="https://coomeslab.org">David A Coomes</a>, <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> and <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a>, aimed at issuing trusted and verifiable carbon credits towards the prevention of nature destruction due to anthropogenic actions. We researched a combination of large-scale data processing (satellite and and sensor networks) and decentralised <a href="https://tezos.com">Tezos</a> smart contracts to design a carbon marketplace with verifiable transactions that link back to trusted primary observations. <span class="morewords">[…<a href="https://anil.recoil.org/projects/4c">230 words</a>]</span></p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Secure Programming with Dispersed Compartments</title><link href="https://anil.recoil.org/ideas/dispersed-compartments" rel="alternate"></link><published>2022-05-01T01:00:00Z</published><updated>2022-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/dispersed-compartments</id><summary type="html"><h1>Secure Programming with Dispersed Compartments</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science PhD topic, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://zatkh.github.io/">Zahra Tarkhani</a>.</p>···<p>See <a class="contact" href="https://zatkh.github.io/">Zahra Tarkhani</a>'s completed <a href="https://www.repository.cam.ac.uk/items/15b038fd-2b81-4608-a033-fc5a39de3bf2">PhD thesis</a>-on the subject for more details!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Multicore Monthly: heading towards OCaml 5.0</title><link href="https://anil.recoil.org/notes/multicore-monthly-mar22" rel="alternate"></link><published>2022-04-19T01:00:00Z</published><updated>2022-04-19T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-mar22</id><summary type="html"><p>We're getting closer to a stable release of OCaml 5.0, including reenabling support for the BSDs and introducing ARM64 multicore support.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Virtual and Augmented Reality</title><link href="https://ryan.freumh.org/vr-ar.html" rel="alternate"></link><published>2022-04-18T01:00:00Z</published><updated>2022-04-18T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/vr-ar.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>OCaml Multicore Monthly: post merge activites</title><link href="https://anil.recoil.org/notes/multicore-monthly-jan22" rel="alternate"></link><published>2022-02-09T00:00:00Z</published><updated>2022-02-09T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-jan22</id><summary type="html"><p>After we got the massive OCaml 5.0 pull request merged, we've taken some time to consolidate the trunk branch of OCaml and start down the release path towards getting OCaml 5.0 out of the door.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>DNS LOC</title><link href="https://ryan.freumh.org/dns-loc-rr.html" rel="alternate"></link><published>2022-01-18T00:00:00Z</published><updated>2022-01-18T00:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/dns-loc-rr.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using effect handlers for efficient parallel scheduling</title><link href="https://anil.recoil.org/ideas/parallel-scheduling-with-effects" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/parallel-scheduling-with-effects</id><summary type="html"><h1>Using effect handlers for efficient parallel scheduling</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/bartoszmodelski">Bartosz Modelski</a>.</p>···<p>Read the full <a href="https://github.com/bartoszmodelski/ebsl/blob/main/report/report.pdf">reportonline, and see the <a href="https://github.com/bartoszmodelski/ebsl">notebooks</a>-associated with the experiments here.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Spatial Name System</title><link href="https://anil.recoil.org/ideas/sns" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/sns</id><summary type="html"><h1>Spatial Name System</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>. It was co-supervised with <a class="contact" href="mailto:jon.crowcroft@cl.cam.ac.uk">Jon Crowcroft</a>.</p>···<p>An extended version of this was published in HotNets 22 in <a href="https://anil.recoil.org/papers/2023-hotnets-sns">Where on Earth is the Spatial Name System?</a>.The MPhil dissertation is available <a href="https://ryan.freumh.org/papers/2022-mphil-sns.pdf">online as aPDF</a>. <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a> has continued-on to work on his PhD on <a href="https://anil.recoil.org/ideas/interspatial-networking">Interspatial Networking with DNS</a> as well!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Scalable agent-based models for optimized policy design</title><link href="https://anil.recoil.org/ideas/differentiable-abm" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/differentiable-abm</id><summary type="html"><h1>Scalable agent-based models for optimized policy design</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Sharan Agrawal</a>. It was co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a>.</p><p>As the world faces twinned crises of climate change and biodiversity loss, the need for integrated policy approaches addressing both is paramount. To help address this, this project investigates a new agent-based model dubbed the VDSK-B. Using Dasgupta's <a href="https://www.gov.uk/government/publications/final-report-the-economics-of-biodiversity-the-dasgupta-review">review of the economics of biodiversity</a>, it builds on the <a href="https://www.sciencedirect.com/science/article/pii/S0921800917314623">Dystopian Schumpeter meets Keynes</a> (DSK) climate economics model to link together the climate, economy and biosphere. This is the first ABM proposed that integrates all 3 key elements.</p><p>The project also investigates how to scale such ABMs to be applicable for global policy design and scale to planetary-sized models. A new ABM framework called SalVO expresses agent updates as recursive applications of pure agent functions. This formalism differs from existing computational ABM models but is shown to be expressive enough to emulate a Turing complete language. SalVO is built on a JAX backend and designed to be scalable, vectorized, and optimizable. Employing hardware acceleration, tests showed it was more performant and more able to scale on a single machine than any existing ABM framework, such as FLAME (GPU).</p>···-<p><a class="contact" href="https://www.linkedin.com/in/pedro-marques-sousa/">Pedro Sousa</a> did a follow up project on <a href="https://anil.recoil.org/ideas/rev-abm">Reverse emulating agent-based models for policy simulation</a> in 2023.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Planetary Computing</title><link href="https://anil.recoil.org/projects/plancomp" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/plancomp</id><summary type="html"><div>···-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Enhancing the Security & Privacy of Wearable Brain-Computer Interfaces</title><link href="https://anil.recoil.org/news/2022-enhancing-brain-security-1" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2022-enhancing-brain-security-1</id><summary type="html"><p>Preprint on security vulnerabilities in brain-computer interfaces</p>···&nbsp; <a href="https://anil.recoil.org/papers/2022-enhancing-brain-security.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Decentralised Capability-based Code Collaboration using Matrix</title><link href="https://anil.recoil.org/ideas/version-control-matrix" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/version-control-matrix</id><summary type="html"><h1>Decentralised Capability-based Code Collaboration using Matrix</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a>.</p>···-on request from <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Multicore Monthly: code review complete with Inria</title><link href="https://anil.recoil.org/notes/multicore-monthly-dec21" rel="alternate"></link><published>2021-12-21T00:00:00Z</published><updated>2021-12-21T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-dec21</id><summary type="html"><p>We've been working hard on OCaml multicore support, and went over to Paris to sit down with some core developers from Inria and work through code review of our proposed patches.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>2021 SDG Hackathon</title><link href="https://ancazugo.github.io/r/tidytuesday/sdg-hackathon.html" rel="alternate"></link><published>2021-11-06T00:00:00Z</published><updated>2021-11-06T00:00:00Z</updated><author><name></name></author><id>https://ancazugo.github.io/r/tidytuesday/sdg-hackathon</id><summary type="html"><p>I participated in the 2021 <a href="https://www.sdghackathon.io/">SDG Hackathon</a> hosted by CORELAID Switzerland and the University of Basel. The data used was obtained from text analysis of projects realted to SDGs in Switzerland using five different systems. Each system detected a number of times each SDG in each project. I wanted to show how commonly each SDG is detected by each system from the dataset and for this purpose I created a rank view of the 17 SDGs using ggbump and integrating it with ggtext and several other packages. You can check out the code in the <a href="https://github.com/ancazugo/sdg-hackathon">GitHub repo</a>.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Launching the Cambridge Centre for Carbon Credits</title><link href="https://anil.recoil.org/notes/4c-launch" rel="alternate"></link><published>2021-11-04T00:00:00Z</published><updated>2021-11-04T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/4c-launch</id><summary type="html"><p>I launched <a href="https://anil.recoil.org/projects/4c">4C</a> recently, and Pembroke College covers the launch with an interview with me.</p><p>The world is facing a large-scale environmental crisis. Two parallel and related strands of this are, first, the crisis in biodiversity and the rapid extinction of many species, recently addressed at the COP15 UN Biodiversity Conference in October, and second, the threat of climate change, the topic of last month’s COP26 summit in Glasgow. Pressure is growing on governments to execute nature-based solutions which will offset some of the most damaging impacts of these crises. While COP26 built some momentum, there is still a long way to go to turn promises into lasting change. More engagement with the private sector is urgently needed.</p><p>The solution to the crisis is two-pronged: we must engage in behaviour change to reduce unnecessary harmful emissions, and also invest in nature-based solutions at global scales to not only reduce, but ultimately reverse the effects of climate change and biodiversity loss.<cite>-- <a href="https://www.pem.cam.ac.uk/college/corporate-partnership/25th-anniversary-corporate-partnership-programme/25th-anniversary-11">Pembroke College</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>What is an Operating System?</title><link href="https://anil.recoil.org/notes/signals-and-threads" rel="alternate"></link><published>2021-11-03T00:00:00Z</published><updated>2021-11-03T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/signals-and-threads</id><summary type="html"><p>I am the latest person to feature on the first season of the <a href="https://signalsandthreads.com/what-is-an-operating-system/">Signals andhosted by <a class="contact" href="https://github.com/yminsky">Yaron Minsky</a> (you may recognise him as my co-author on <a href="https://anil.recoil.org/papers/rwo">Real World OCaml</a>).</p><p>Anil Madhavapeddy is an academic, author, engineer, entrepreneur, and OCaml aficionado. In this episode, Anil and Ron consider the evolving role of operating systems, security on the internet, and the pending arrival (at last!) of OCaml 5.0. They also discuss using Raspberry Pis to fight climate change; the programming inspiration found in British pubs and on Moroccan beaches; and the time Anil went to a party, got drunk, and woke up with a job working on the Mars Polar Lander.<cite>-- <a href="https://signalsandthreads.com/what-is-an-operating-system/">Signals and Threads</a></cite></p>-<p>I think I might be the first non- Jane Street person to be on their podcast! Quite the honour.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Hosting HotCRP</title><link href="https://mort.io/blog/setup-hotcrp/" rel="alternate"></link><published>2021-10-17T01:00:00Z</published><updated>2021-10-17T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/setup-hotcrp/</id><summary type="html"><p>I once had cause to setup<a href="https://read.seas.harvard.edu/~kohler/hotcrp/">HotCRP</a> for local hosting.···</span><span class="z-source z-shell z-bash"><span class="z-keyword z-operator z-assignment z-redirection z-shell">&lt;</span>/IfModule<span class="z-keyword z-operator z-assignment z-redirection z-shell">&gt;</span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">11.</span></span><span class="z-meta z-function-call z-arguments z-shell"> Add DNS entry for the name assigned (in my case, <span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-punctuation z-section z-group z-begin z-shell">`</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">hotcrp.DOMAIN</span></span><span class="z-punctuation z-section z-group z-end z-shell">`</span></span></span><span class="z-meta z-function-call z-shell"></span>)<span class="z-meta z-function-call z-shell"><span class="z-support z-function z-dot z-shell">.</span></span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>ILNP Interface</title><link href="https://ryan.freumh.org/ilnp-interface.html" rel="alternate"></link><published>2021-10-16T01:00:00Z</published><updated>2021-10-16T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/ilnp-interface.html</id><summary type="html"><article>···<li>On NAT traversal: <a href="https://tailscale.com/blog/how-nat-traversal-works/">https://tailscale.com/blog/how-nat-traversal-works/</a></li>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>OCaml Multicore Monthly: effect handling confirmed for 5.0</title><link href="https://anil.recoil.org/notes/multicore-monthly-sep21" rel="alternate"></link><published>2021-10-01T01:00:00Z</published><updated>2021-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-sep21</id><summary type="html"><p>We're making steady progress on getting multicore support merged into OCaml, including some great developer meetings where we achieved consensus with the core team to include support for effect handlers in the 5.0 release.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Forest preservation and restoration</title><link href="https://anil.recoil.org/notes/forests" rel="alternate"></link><published>2021-09-25T01:00:00Z</published><updated>2021-09-25T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/forests</id><summary type="html"><p>I track external notes and media articles here on forest preservation andrestoration as part of my work on <a href="https://anil.recoil.org/projects/4c">Trusted Carbon Credits</a>. Not complete, just a reading list.</p><li><a href="https://www.youtube.com/watch?v=yiw6_JakZFc">Can YOU Fix Climate Change?</a> (great short summary of the overall issues)</li>···<li><a href="https://www.sciencedirect.com/science/article/pii/S001671851930051X">Cryptocarbon: The promises and pitfalls of forest protection on a blockchain</a></li><li><a href="https://www.nature.com/articles/s41558-018-0285-8">Valuing climate damages at the country level</a> - nature climate change, 2018</li><li><a href="https://www.nature.com/articles/s41558-018-0282-y">Country-level social cost of carbon</a>, nature climate change 2018</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Decentralised tech on Recoil</title><link href="https://anil.recoil.org/notes/decentralised-stack" rel="alternate"></link><published>2021-09-19T01:00:00Z</published><updated>2021-09-19T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/decentralised-stack</id><summary type="html"><p><a class="contact" href="https://nick.recoil.org">Nick Ludlam</a> and I have self-hosted recoil.org since around 1996, typically for···-ported yet.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Roadmap for OCaml's online presence</title><link href="https://anil.recoil.org/notes/roadmap-ocamlorg-v3" rel="alternate"></link><published>2021-08-27T01:00:00Z</published><updated>2021-08-27T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/roadmap-ocamlorg-v3</id><summary type="html"><p>After a decade of good service, it's time to overhaul OCaml's online presence-edition of the OCaml.org website.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Tarballing some files</title><link href="https://mort.io/blog/tar-includes/" rel="alternate"></link><published>2021-08-25T01:00:00Z</published><updated>2021-08-25T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/tar-includes/</id><summary type="html"><p>I recently discovered, to some irritation, that the <code>--include PATTERN</code> optionto <code>tar</code> seems only to apply to directories – and if the <code>PATTERN</code> doesn’tmatch, it won’t traverse subdirectories. But I wanted to include <code>*.php</code> forsome reason. So instead pipe the output of <code>find</code>, or better these days,<a href="https://github.com/sharkdp/fd"><code>fd</code></a>:</p><pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">fd</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>e</span> php<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>0</span></span> <span class="z-keyword z-operator z-logical z-pipe z-shell">|</span> <span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">tar</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>cvjf</span> TARBALL.bz2<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>null</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>files-from</span> -</span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>How Computer Science Can Aid Forest Restoration</title><link href="https://anil.recoil.org/news/2021-arxiv-forestrycs-1" rel="alternate"></link><published>2021-08-01T01:00:00Z</published><updated>2021-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2021-arxiv-forestrycs-1</id><summary type="html"><p>Preprint about our working notes on how CS might contribute to forest preservation</p>···&nbsp; <a href="https://anil.recoil.org/papers/2021-arxiv-forestrycs.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Experiences with Effects</title><link href="https://anil.recoil.org/news/2021-oud-effects-1" rel="alternate"></link><published>2021-08-01T01:00:00Z</published><updated>2021-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2021-oud-effects-1</id><summary type="html"><p>Paper on programming with effects in OCaml</p>···&nbsp; <a href="https://anil.recoil.org/papers/2021-oud-effects.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cubes</title><link href="https://ryan.freumh.org/cubes.html" rel="alternate"></link><published>2021-06-03T01:00:00Z</published><updated>2021-06-03T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/cubes.html</id><summary type="html"><article>···-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Retrofitting effect handlers onto OCaml</title><link href="https://anil.recoil.org/news/2021-pldi-retroeff-1" rel="alternate"></link><published>2021-06-01T01:00:00Z</published><updated>2021-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2021-pldi-retroeff-1</id><summary type="html"><p>Paper on retrofitting effects in OCaml presented in PLDI 2024</p>···&nbsp; <a href="https://anil.recoil.org/papers/2021-pldi-retroeff.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Network layer mobility</title><link href="https://ryan.freumh.org/network-layer-mobility.html" rel="alternate"></link><published>2021-05-10T01:00:00Z</published><updated>2021-05-10T01:00:00Z</updated><author><name>Ryan Gibb (ryan@freumh.org)</name></author><id>https://ryan.freumh.org/network-layer-mobility.html</id><summary type="html"><article>···questions feel free to get in touch at <a href="mailto:ryan@freumh.html">ryan@freumh.org</a>.</span></p>-</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>25 years of OCaml!</title><link href="https://www.dra27.uk/blog/platform/2021/05/09/ocaml-at-25.html" rel="alternate"></link><published>2021-05-09T01:00:00Z</published><updated>2021-05-09T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2021/05/09/ocaml-at-25</id><summary type="html"><p>On this day in 1996, Xavier Leroy <a href="https://sympa.inria.fr/sympa/arc/caml-list/1996-05/msg00003.html">announced Objective Caml 1.00</a> (the language wasn’t officially called OCaml until <a href="https://sympa.inria.fr/sympa/arc/caml-list/2012-07/msg00179.html">4.00.0 in July 2012</a>). I wouldn’t start using OCaml for another 7 years; I think I may have dropped Research Machines Basic by then and was mucking around with a mix of Visual Basic, Turbo Pascal and Delphi, but I hadn’t yet got an email address either.</p><p>For whatever reason, the <code class="language-plaintext highlighter-rouge">1.00</code> tag deletes the boot images, but they can be taken from the <a href="https://github.com/dra27/ocaml/tree/2de35753f7b43b11098f7d25a09b8cb904c1a2ca/boot">commit before</a>. I could get the runtime to build quite easily on Ubuntu, but alas while it appeared to be able to run <code class="language-plaintext highlighter-rouge">boot/ocamllex</code>, <code class="language-plaintext highlighter-rouge">boot/ocamlc</code> was just segfaulting. I debated firing up my old dual-Pentium III which apparently had Slackware 10 on it, but I thought I’d give the Windows port a go first!</p>···-<p>Here’s to the next 25 years!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Void Processes: Minimising privilege by default</title><link href="https://anil.recoil.org/ideas/void-processes" rel="alternate"></link><published>2021-01-01T00:00:00Z</published><updated>2021-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/void-processes</id><summary type="html"><h1>Void Processes: Minimising privilege by default</h1><p>This is an idea proposed in 2021 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://blog.hillion.co.uk">Jake Hillion</a>.</p>···<li>The dissertation is available as a <a href="https://blog.hillion.co.uk/posts/void-processes/dissertation/jsh77-dissertation.pdf">PDF</a>, with associated <a href="https://blog.hillion.co.uk/posts/void-processes/dissertation/">blog post</a> and <a href="https://github.com/JakeHillion/void-processes">LaTeX source</a>.</li><li>The source code to the void orchestrator prototype is at <a href="https://github.com/JakeHillion/void-orchestrator">jakehillion/void-orchestrator</a>.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Security analysis of brain-computing interfaces</title><link href="https://anil.recoil.org/ideas/brain-interface-security" rel="alternate"></link><published>2021-01-01T00:00:00Z</published><updated>2021-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/brain-interface-security</id><summary type="html"><h1>Security analysis of brain-computing interfaces</h1><p>This is an idea proposed in 2021 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Malachy O'Connor Brown</a> and <a class="contact" href="https://anil.recoil.org/">Oscar Hill</a>. It was co-supervised with <a class="contact" href="https://zatkh.github.io/">Zahra Tarkhani</a> and <a class="contact" href="https://lorenaqendro.github.io">Lorena Qendro</a>.</p>···<li><strong>Adversarial attacks on BCI.</strong> We explore various methods to detect and analyze security threats on BCI ML models, including attacks based on perturbed inputs, inference, and model patterns. You need to have development skills (e.g., C, C++, Python) and experience with at least one ML/Deep Learning framework such as PyTorch or TensorFlow. Previous work on embedded devices and adversarial attacks is preferred.</li><p>The results of this work were written up in <a href="https://anil.recoil.org/papers/2022-enhancing-brain-security">Enhancing the Security &amp; Privacy of Wearable Brain-Computer Interfaces</a>,-which is a really fun but rather worrying read!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Exploring Concurrency in Agent-Based Modelling with Multicore OCaml</title><link href="https://anil.recoil.org/ideas/ocaml-forest-sim" rel="alternate"></link><published>2021-01-01T00:00:00Z</published><updated>2021-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/ocaml-forest-sim</id><summary type="html"><h1>Exploring Concurrency in Agent-Based Modelling with Multicore OCaml</h1><p>This is an idea proposed in 2021 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Martynas Sinkievič</a>.</p>···<li>The source code is on a <a href="https://github.com/mSinkievic/troll-ocaml">private repository on GitHub</a>. Please contact <a class="contact" href="https://anil.recoil.org/">Martynas Sinkievič</a> to request access.</li><li>The dissertation is available on request for interested students from <a class="contact" href="https://anil.recoil.org">Anil Madhavapeddy</a> but has not otherwise been made public.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Banyan: Coordination-Free Distributed Transactions over Mergeable Types</title><link href="https://anil.recoil.org/news/2020-asplas-banyan-1" rel="alternate"></link><published>2020-11-01T00:00:00Z</published><updated>2020-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2020-asplas-banyan-1</id><summary type="html"><p>Paper on Banyan for coordination-free distributed transactions in ASPLAS 2020</p>···&nbsp; <a href="https://anil.recoil.org/papers/2020-asplas-banyan.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using memtrace on Windows</title><link href="https://www.dra27.uk/blog/platform/2020/10/08/windows-memtrace.html" rel="alternate"></link><published>2020-10-08T01:00:00Z</published><updated>2020-10-08T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2020/10/08/windows-memtrace</id><summary type="html"><p>It is said that good things come to those who wait. Jacques-Henri Jourdan demonstrated <a href="https://ocaml.org/meetings/ocaml/2016/Jourdan-statistically_profiling_memory_in_OCaml.pdf">Statistically profiling memory in OCaml</a> at the 2016 OCaml Workshop and experimental branches of it existed for OCaml 4.03–4.07 in opam. Parts of the work were merged in OCaml 4.10 and the final sections landed with 4.11. The compiler provides support in the form of a series of hooks in various parts of the runtime’s allocation and garbage collection routines. A few weeks ago, Jane Street released <a href="https://github.com/janestreet/memtrace">memtrace</a> and <a href="https://github.com/janestreet/memtrace_viewer">Memtrace viewer</a> and earlier this week <a href="https://blog.janestreet.com/finding-memory-leaks-with-memtrace/">blogged about its use</a>. I thought I’d quickly share the experience of using it on native Windows.</p><p>At present, although the memtrace library is portable, the memtrace-viewer itself is not (as it happens, this is simply down to Core’s command line parser pulling in a little too much Unix-specific stuff, and the use of Async as a backend to Cohttp, rather than Lwt, but that’s for another time!). However, WSL to the rescue…</p>···<p><img alt="memtrace-viewer in action" src="https://www.dra27.uk/assets/2020-10-08/2020-10-08-leaky.png" /></p>-<p>Obviously, at some point it’ll be nice not to have to rely on a Unix subsystem in order to run the viewer, but meanwhile it’s great to have a workflow on the same machine to be able to investigate memory leaks in native Windows programs!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Data visualisation links</title><link href="https://mort.io/blog/dataviz/" rel="alternate"></link><published>2020-09-07T01:00:00Z</published><updated>2020-09-07T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/dataviz/</id><summary type="html"><p>Some possibly useful data visualisation links:</p><li><a href="https://medium.economist.com/why-you-sometimes-need-to-break-the-rules-in-data-viz-4d8ece284919">https://medium.economist.com/why-you-sometimes-need-to-break-the-rules-in-data-viz-4d8ece284919</a></li><li><a href="https://colororacle.org/">https://colororacle.org/</a></li>-</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>The OCaml Platform: 2020</title><link href="https://anil.recoil.org/news/2020-oud-platform-1" rel="alternate"></link><published>2020-09-01T01:00:00Z</published><updated>2020-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2020-oud-platform-1</id><summary type="html"><p>Annual update on the OCaml Platform at the OCaml Workshop</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>State of the OCaml Platform 2020</title><link href="https://anil.recoil.org/news/b11188ba-0f97-4ec4-b372-fa3cea0821ab-1" rel="alternate"></link><published>2020-08-28T01:00:00Z</published><updated>2020-08-28T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/b11188ba-0f97-4ec4-b372-fa3cea0821ab-1</id><summary type="html"><p>Talk on the state of the OCaml Platform in 2020</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Renovating an old media PC</title><link href="https://mort.io/blog/mediapc/" rel="alternate"></link><published>2020-08-28T01:00:00Z</published><updated>2020-08-28T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/mediapc/</id><summary type="html"><p>Some notes from my first attempt to renovate an old media PC that had a SYSLINUX···</span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">sudo</span></span><span class="z-meta z-function-call z-arguments z-shell"> lshw<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>C</span> storage<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>short</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>numeric</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">sudo</span></span><span class="z-meta z-function-call z-arguments z-shell"> apk add lsblk</span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">sudo</span></span><span class="z-meta z-function-call z-arguments z-shell"> lsblk</span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>OCaml Multicore Monthly: systhreads compatibility merged</title><link href="https://anil.recoil.org/notes/multicore-monthly-sep20" rel="alternate"></link><published>2020-08-20T01:00:00Z</published><updated>2020-08-20T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-sep20</id><summary type="html"><p>The big advance in the multicore OCaml branch is that we restored compatibility···<cite>-- <a href="https://discuss.ocaml.org/t/multicore-ocaml-september-2020/6565">me, on the discussion forum</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Retrofitting parallelism onto OCaml</title><link href="https://anil.recoil.org/news/2020-icfp-retropar-1" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2020-icfp-retropar-1</id><summary type="html"><p>Won best paper award at ICFP 2020 for our paper on retrofitting parallelism onto OCaml!</p>···&nbsp; <a href="https://anil.recoil.org/papers/2020-icfp-retropar.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Parallelising your OCaml Code with Multicore OCaml</title><link href="https://anil.recoil.org/news/2020-oud-parallelising-1" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2020-oud-parallelising-1</id><summary type="html"><p>Paper on how to parallelise OCaml code at the OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2020-oud-parallelising.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml-CI: A Zero-Configuration CI</title><link href="https://anil.recoil.org/news/2020-oud-ci-1" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2020-oud-ci-1</id><summary type="html"><p>Presented the new OCaml DSL for continuous integration at the OCaml Workshop</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Making GPS accurate in dense forests using sensor fusion</title><link href="https://anil.recoil.org/ideas/sensor-fusion-vslam-forests" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/sensor-fusion-vslam-forests</id><summary type="html"><h1>Making GPS accurate in dense forests using sensor fusion</h1><p>This is an idea proposed in 2020 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://keshav123456.github.io">Keshav Sivakumar</a>. It was co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> and <a class="contact" href="https://coomeslab.org">David A Coomes</a>.</p><p>Current GPS solutions are either very expensive ($8k+) or have relatively poor accuracies (10m+) under dense forest canopy. This project explores how to determine our location accurately in a forest area where we travel by foot under canopy without a GPS signal.</p>···<li>What constraints and advantages do these solutions have (in terms of power, light, cost, etc)</li><p>We observe that a lot of SLAM algorithms exist these days, but most of the recent research is on optimizing for monocular cameras, whereas we have the luxury of using cameras built for this purpose. A lot of options also exist with regards to depth cameras/fish eye cameras that specialize for localisation/mapping use cases. We chose the Intel T265 as it is part of a family of widely used products, and comes with a usable library (librealsense). It can also provide a good benchmark for base VSLAM, there is huge scope for greater accuracy by using depth cameras or LIDAR, but it is the cheapest, easiest solution among the current industry grade solutions. Interestingly, even the latest iPad Pro has LIDAR built-in now, so this is a solid approach!</p>-<p>The project was completed successfully (remotely due to pandemic), with details available in <a href="https://forests.notion.site/Keshav-Sivakumar-1fe07a2ebf0e4c318c50ac5e15bedae5">the PDF writeup and slides</a>, and <a href="https://github.com/keshav123456/UROP2020">code notebooks</a> on GitHub.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Discord discord</title><link href="https://mort.io/blog/discord/" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/discord/</id><summary type="html"><p>So for some reason I wanted to do this – use Discord on an iPad without···-<p>Seems something of a palaver but hey, these twisted webs we weave.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>OCaml Multicore Monthly: preprint paper available</title><link href="https://anil.recoil.org/notes/multicore-monthly-apr20" rel="alternate"></link><published>2020-04-27T01:00:00Z</published><updated>2020-04-27T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-apr20</id><summary type="html"><p>In the April OCaml multicore monthly, we have a preprint available of our ICFP submission about the OCaml 5 multicore runtime.-<em>(Update: This paper actually won the ICFP best paper award later in the year! Read it at &quot;<a href="https://anil.recoil.org/papers/2020-icfp-retropar">Retrofitting parallelism onto OCaml</a>&quot;).</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The First Billion Real Deployments of Unikernels</title><link href="https://anil.recoil.org/news/c09ed36f-6ad5-4254-a0ce-3ca3398f38a3-1" rel="alternate"></link><published>2020-02-26T00:00:00Z</published><updated>2020-02-26T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/c09ed36f-6ad5-4254-a0ce-3ca3398f38a3-1</id><summary type="html"><p>Part 2</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Rebuilding Operating Systems with Functional Principles</title><link href="https://anil.recoil.org/news/d456e4bc-bce6-45ad-9d2e-102f834ec400-1" rel="alternate"></link><published>2020-02-26T00:00:00Z</published><updated>2020-02-26T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/d456e4bc-bce6-45ad-9d2e-102f834ec400-1</id><summary type="html"><p>Delivered the distinguished seminar series at St Andrews on rebuilding Operating Systems with functional principles</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming the Next Trillion Embedded Devices</title><link href="https://anil.recoil.org/news/287364fa-b59c-4b9f-812d-d81cc0c992a5-1" rel="alternate"></link><published>2020-02-26T00:00:00Z</published><updated>2020-02-26T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/287364fa-b59c-4b9f-812d-d81cc0c992a5-1</id><summary type="html"><p>Part 3</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Multicore Monthly: starting upstream to OCaml</title><link href="https://anil.recoil.org/notes/multicore-monthly-jan20" rel="alternate"></link><published>2020-01-29T00:00:00Z</published><updated>2020-01-29T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/multicore-monthly-jan20</id><summary type="html"><p>We started the process of upstreaming our <a href="https://anil.recoil.org/papers/2014-oud-multicore">multicore OCaml</a> branch to mainline OCaml, and so I started posting regular updates to the community forum.</p><p>The most common question we get is how to contribute to the overall multicore effort. As I noted last year, we are now in the process of steadily upstreaming our efforts to mainline OCaml. Therefore, the best way by far to contribute is to test for regressions or opportunities for improvements in the patches that are outstanding in the main OCaml repository.<cite>-- <a href="https://discuss.ocaml.org/t/multicore-ocaml-january-2020-update/5090">me, on the discussion forum</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Information Flow for Trusted Execution</title><link href="https://anil.recoil.org/projects/difc-tee" rel="alternate"></link><published>2020-01-01T00:00:00Z</published><updated>2020-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/difc-tee</id><summary type="html"><div>···stages with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> and <a class="contact" href="https://mynameismwd.org">Michael Dales</a>.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Setting up a Macbook</title><link href="https://mort.io/blog/setup-new-laptop/" rel="alternate"></link><published>2020-01-01T00:00:00Z</published><updated>2020-01-01T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/setup-new-laptop/</id><summary type="html"><p>This is the set of things that I roughly did to set up my old new Macbook:<h2 id="keyboard"><a class="zola-anchor" href="https://mort.io/blog/setup-new-laptop/#keyboard">Keyboard</a></h2>···</span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-punctuation z-section z-group z-begin z-shell">`</span><span class="z-punctuation z-section z-group z-end z-shell">`</span></span><span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-punctuation z-section z-group z-begin z-shell">`</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">bash</span></span></span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">opam</span></span><span class="z-meta z-function-call z-arguments z-shell"> install<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>y</span> ocal</span>-</span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>OpenBSD cloud hosting options</title><link href="https://anil.recoil.org/notes/openbsd-hosting" rel="alternate"></link><published>2019-08-29T01:00:00Z</published><updated>2019-08-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/openbsd-hosting</id><summary type="html"><p>I <a href="https://twitter.com/avsm/status/1167012354556669952">asked on Twitter</a> about hosting options for OpenBSD on cloud providers, so that we could have some alternative options for Recoil. We have a strong preference for bare-metal and not VMs when it comes to OpenBSD. Options that came back were:</p>···<li>Good <a href="https://twitter.com/vphantom/status/1167020959771049984">recommendation</a> from Stephane</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The OCaml Platform in 2019</title><link href="https://anil.recoil.org/news/2019-ocaml-platform-1" rel="alternate"></link><published>2019-08-01T01:00:00Z</published><updated>2019-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2019-ocaml-platform-1</id><summary type="html"><p>Annual update on the OCaml Platform in 2019</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-ocaml-platform.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS 4: the dawn of practical build systems for exotic targets</title><link href="https://anil.recoil.org/news/2019-mirage-build-1" rel="alternate"></link><published>2019-08-01T01:00:00Z</published><updated>2019-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2019-mirage-build-1</id><summary type="html"><p>Paper on the MirageOS 4 build system at OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-mirage-build.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming Unikernels in the Large via Functor Driven Development</title><link href="https://anil.recoil.org/news/2019-mirage-functors-1" rel="alternate"></link><published>2019-05-01T01:00:00Z</published><updated>2019-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2019-mirage-functors-1</id><summary type="html"><p>Preprint on programming unikernels with ML modules</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-mirage-functors.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Snape: The Dark Art of Handling Heterogeneous Enclaves</title><link href="https://anil.recoil.org/news/2019-edgesys-snape-1" rel="alternate"></link><published>2019-03-01T00:00:00Z</published><updated>2019-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2019-edgesys-snape-1</id><summary type="html"><p>Paper on a framework to rearchitect applications for better TEE support at EdgeSys 2019</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-edgesys-snape.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Falsehoods</title><link href="https://mort.io/blog/falsehoods/" rel="alternate"></link><published>2019-01-11T00:00:00Z</published><updated>2019-01-11T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/falsehoods/</id><summary type="html"><p>Being a list of some cool “Falsehoods programmers believe about …” sites, nowredundant thanks to <a href="https://github.com/kdeldycke/awesome-falsehood">https://github.com/kdeldycke/awesome-falsehood</a>:</p><li><a href="http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time">…time</a></li>···<li><a href="http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/">…names</a></li><li><a href="https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/">…addresses</a></li><li><a href="http://wiesmann.codiferes.net/wordpress/?p=15187&amp;lang=en">…geography</a></li>-</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>Distributed Task Scheduling Framework over Irmin</title><link href="https://anil.recoil.org/ideas/distributed-tasks-irmin" rel="alternate"></link><published>2019-01-01T00:00:00Z</published><updated>2019-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/distributed-tasks-irmin</id><summary type="html"><h1>Distributed Task Scheduling Framework over Irmin</h1><p>This is an idea proposed in 2019 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Mohammed Daudali</a>.</p><p>Distributed computation and task scheduling frameworks can be decentralised with minimal cost to performance. Furthermore, this decentralisation can provide a significant reduction in the trusted computing base and complexity of the system, affording end consumers a greater level of confidence in the integrity of the results. Moreover, carefully designed persistent and transient data structures can augment this confidence by providing strong isolation guarantees in a multi-tenant system, whilst retaining full transparency over the dynamic data flow graph. This can all be achieved with an API that interfaces directly with conventional developer tools, enabling end users to easily verify that the computation directly aligns with their expectations. Detailed metadata can ensure a fair and transparent pricing structure for both service providers and consumers by carefully tracking the resource usage. Together, this allows open-source communities to remain completely transparent whilst providing non-developer end users a simpler and more accessible downloadable package that can be independently verified.</p><p>This project will investigate building a composable task scheduler over <a href="https://github.com/mirage/irmin">Irmin</a>. The core of this project started with a single server model, in which a large number of workers can independently clone and interact with a persistent job queue CRDT. Crucially, each worker schedules tasks using only local knowledge, giving a high probability that at least two workers are working on the same task. This has a twofold benefit - completed work can be independently verified by a number of different workers, and two, work in progress by stragglers can be selected by other workers, which can result in a lower time to completion. By independently sampling and verifying work, we remove the need for implicitly trusting individual workers. Adversaries must now compromise all worker nodes to have the required effect - compromising N - 1 workers results in a non-zero probability of the attack being detected. Given a heterogeneous set of worker machines, all under the control of different and independent entities, this attack becomes significantly harder. The project will investigate suitable sampling schedules for calculating the pareto frontier of over-committing work versus cluster throughput.</p>···<li>The dissertation writeup is in a private <a href="https://github.com/mdaudali/dissertation_writeup">GitHub repository</a> and the Irmin implementation code also in a <a href="https://github.com/mdaudali/Dissertation">private repository</a>. Please contact the author directly for access.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A strongly consistent index for email using git and MirageOS</title><link href="https://anil.recoil.org/ideas/git-maildir" rel="alternate"></link><published>2019-01-01T00:00:00Z</published><updated>2019-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/git-maildir</id><summary type="html"><h1>A strongly consistent index for email using git and MirageOS</h1><p>This is an idea proposed in 2019 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/odnh">Oliver Hope</a>. It was co-supervised with <a class="contact" href="https://github.com/dra27">David Allsopp</a>.</p><p><a href="https://en.wikipedia.org/wiki/Maildir">Maildir</a> is a widely used format for storing emails. Its main benefit is that it uses the filesystem in such a way that client programs do not have to handle locking themselves. The downside of this is that it makes it hard to create a consistent index as we cannot guarantee that the filesystem is in a consistent state when we try to update it. If we did have a consistent index, it would allow for safer concurrent support and the implementation of new features.</p><p>The aim of this project therefore is to solve the consistency problem. This can be done by using git, the version control system, to build an overlay on top of maildir in the filesystem, allowing multiple filesystem operations to be bundled into commits. These can be used to keep track of all changes made to the maildir. As these changes are being recorded by a version control system, we can be sure that any index built on top will be strongly consistent. As git also provides branching, we can extend this model to add new features described in the possible extensions section.</p><p>The project successfully implemented this git overlay using libraries provided by <a href="https://github.com/mirage">MirageOS</a> which provide git functionality, maildir operations, and even email parsing. With the overlay, and therefore consistent index implemented, the project was able to make many more guarantees about the state of the maildir at any time. This allowed for dealing with conflicting operations in an easier and more reliable manner. Furthermore, the overlay also provided the possibility of easily implementing novel features such as roll-back and separate branches for different use cases.</p>-<p><a class="contact" href="https://github.com/odnh">Oliver Hope</a> published his <a href="https://github.com/odnh/gitmaildir">dissertation repository</a> and the <a href="https://github.com/odnh/gitmaildir">source code</a> to gitmaildir online.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Wipeout</title><link href="https://mort.io/blog/wipeout/" rel="alternate"></link><published>2018-12-17T00:00:00Z</published><updated>2018-12-17T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/wipeout/</id><summary type="html"><p>I recently decided to go through some old PCs and hard disks (yes, actual···</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-string z-unquoted z-heredoc z-shell">/dev/vg0/lv_backup /backup xfs defaults 0 0</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-string z-unquoted z-heredoc z-shell"><span class="z-keyword z-control z-heredoc-token z-shell">EOF</span></span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">mount</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>a</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>v <span class="z-comment z-line z-number-sign z-shell"><span class="z-punctuation z-definition z-comment z-begin z-shell">#</span></span><span class="z-comment z-line z-number-sign z-shell"> mount everything, verbosely</span><span class="z-comment z-line z-number-sign z-shell">-</span></span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>The OCaml Platform 1.0 with Reason ML</title><link href="https://crank.recoil.org/videos/watch/13cf3878-7436-4512-844e-f72f36425bc7" rel="alternate"></link><published>2018-12-11T10:57:40Z</published><updated>2018-12-11T10:57:40Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/videos/13cf3878-7436-4512-844e-f72f36425bc7</id><summary type="html"><h2><a href="https://anil.recoil.org/videos/13cf3878-7436-4512-844e-f72f36425bc7">The OCaml Platform 1.0 with Reason ML</a> <span class="title-date">/ Dec 2018</h2>-<p>Speaking about the OCaml Platform at the ReasonML meetup hosted by Pusher.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>New opam repository layout for large libraries</title><link href="https://anil.recoil.org/notes/ocaml-opam-new-layout" rel="alternate"></link><published>2018-11-19T00:00:00Z</published><updated>2018-11-19T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ocaml-opam-new-layout</id><summary type="html"><p>Managing package manager constraints is getting difficult, particularly given the growth of the number of packages in the <a href="https://github.com/ocaml/opam-repository">opam repository</a>. I'm therefore laying out a new mechanism for the OCaml contributors to submit large package sets, such as those from <a href="https://janestreet.com">Jane Street</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A modular foreign function interface</title><link href="https://anil.recoil.org/news/2018-socp-modular-ffi-1" rel="alternate"></link><published>2018-10-01T01:00:00Z</published><updated>2018-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2018-socp-modular-ffi-1</id><summary type="html"><p>Journal paper on building modular foreign function interfaces</p>···&nbsp; <a href="https://anil.recoil.org/papers/2018-socp-modular-ffi.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Foundations of Computer Science</title><link href="https://anil.recoil.org/notes/focs" rel="alternate"></link><published>2018-09-02T01:00:00Z</published><updated>2018-09-02T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/focs</id><summary type="html"><p>Here are the various repos used to create the interactive <a href="https://anil.recoil.org/notes/teaching">teaching</a> environment···on this with me are <a class="contact" href="https://www.cst.cam.ac.uk/people/jdy22">Jeremy Yallop</a>, <a class="contact" href="https://github.com/dra27">David Allsopp</a> and <a class="contact" href="https://github.com/jonludlam">Jon Ludlam</a>, with Jon-being the currently active additional lecturer on the course as of 2024/2025.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The joys of Dune vendoring</title><link href="https://www.dra27.uk/blog/platform/2018/08/15/dune-vendoring.html" rel="alternate"></link><published>2018-08-15T01:00:00Z</published><updated>2018-08-15T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2018/08/15/dune-vendoring</id><summary type="html"><p>Of the many wonderful features provided by <a href="https://github.com/ocaml/dune">Dune</a>, my personal favourite remains its composability. It doesn’t gain much mention in the manual because, well, there’s not <em>that</em> much to explain about it beyond the simple fact that if you put separate Dune projects in subdirectories underneath your current project, then Dune will use those projects in preference to opam-installed libraries. This allows for a far superior workflow to developing using opam pins, as can be seen from my own recent addition of features to Mirage’s <a href="https://github.com/hannesm/logs-syslog">logs-syslog</a> library, which also required an addition to one of its dependencies, <a href="https://github.com/verbosemode/syslog-message">syslog-message</a>. Neither of these libraries are presently built using Dune, however porting <a href="https://github.com/dra27/logs-syslog/tree/dune">them</a> <a href="https://github.com/dra27/syslog-message/tree/dune">both</a> was not particularly difficult, and I thought it would be interesting to show how much more efficient the process of developing my recent patches would have been with Dune, rather than with <code class="language-plaintext highlighter-rouge">opam pin</code>.</p>···<p>Dune rebuilds just the binaries - it knows that the only thing which has changed is where the libraries are coming from, so it doesn’t bother doing any <code class="language-plaintext highlighter-rouge">ocamldep</code> calls.</p>-<p>Remember, there are just two kinds of OCaml project: those which have switched to Dune, and those which need to!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Bounding data races in space and time</title><link href="https://anil.recoil.org/news/2018-pldi-memorymodel-1" rel="alternate"></link><published>2018-06-01T01:00:00Z</published><updated>2018-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2018-pldi-memorymodel-1</id><summary type="html"><p>Paper on the OCaml memory model and underlying theory at PLDI 2018</p>···&nbsp; <a href="https://anil.recoil.org/papers/2018-pldi-memorymodel.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Urgent problem with camlp5 7.03 and macOS OCaml 4.06.1</title><link href="https://www.dra27.uk/blog/platform/2018/05/04/opam-camlp5-system.html" rel="alternate"></link><published>2018-05-04T01:00:00Z</published><updated>2018-05-04T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2018/05/04/opam-camlp5-system</id><summary type="html"><p><em>This was originally on the posted on the <a href="https://opam.ocaml.org/blog/camlp5-system/">OCaml Platform Blog</a>.</em></p><h1 id="packaging-problem-with-opam-repository-camlp5-703-when-upgrading-to-ocaml-4061">Packaging problem with opam-repository camlp5 7.03 when upgrading to OCaml 4.06.1</h1>···-<p>Owing to the changes made to how opam 2 processes package installations, opam 2 has been unaffected by this situation but opam 2’s lead developer <a href="https://github.com/AltGr">@AltGr</a> freely admits that this is more by luck than judgement. However, the second release candidate for opam 2 includes mandatory support for sandboxing on Linux and macOS. Sandboxing package building and installation will protect opam 2 against future issues of this kind, as a malfunctioning build system will be unable to operate on files outside its build directory or, during installation, switch root.</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Concurrent System Programming with Effect Handlers</title><link href="https://anil.recoil.org/news/2017-tfp-effecthandlers-1" rel="alternate"></link><published>2018-04-01T01:00:00Z</published><updated>2018-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2017-tfp-effecthandlers-1</id><summary type="html"><p>Paper on concurrent systems programming with effect handlers at TFP 2017</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-tfp-effecthandlers.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>An architecture for interspatial communication</title><link href="https://anil.recoil.org/news/2018-hotpost-osmose-1" rel="alternate"></link><published>2018-04-01T01:00:00Z</published><updated>2018-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2018-hotpost-osmose-1</id><summary type="html"><p>Paper on the interspatial networking architecture at HotPOST 2018</p>···&nbsp; <a href="https://anil.recoil.org/papers/2018-hotpost-osmose.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Founded Tarides and looking to hire OCaml hackers</title><link href="https://anil.recoil.org/notes/founded-tarides" rel="alternate"></link><published>2018-03-02T00:00:00Z</published><updated>2018-03-02T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/founded-tarides</id><summary type="html"><p>I'm delighted to report that I'm helping my long-time collaborator <a class="contact" href="https://github.com/samoht">Thomas Gazagnaire</a> to return to his OCaml roots from Docker. He has just founded Tarides, a startup in Paris with the goal of advancing the open source OCaml ecosystem.</p><p>Founded in Paris in early 2018, Tarides helps developers and companies build secure, performant and resource-efficient network and storage services. We are using MirageOS to run applications without the overhead of a traditional operating system and Irmin to create scalable distributed applications. Tarides offers commercial support and commercial development services for companies interested to run MirageOS or Irmin as part of their technology stack.<cite> -- <a href="https://discuss.ocaml.org/t/tarides-is-looking-for-software-engineers-to-work-on-mirageos-and-irmin/1690">Thomas Gazagnaire</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A pain in the num</title><link href="https://www.dra27.uk/blog/platform/2018/01/31/num-system.html" rel="alternate"></link><published>2018-01-31T00:00:00Z</published><updated>2018-01-31T00:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2018/01/31/num-system</id><summary type="html"><h1 id="fixing-a-packaging-error-with-num-on-ocaml-4060-system-switches">Fixing a packaging error with num on OCaml 4.06.0 system switches</h1><p>Back in July 2012, the release of OCaml 4.00.0 marked the start of a slow process to remove libraries and tools from the distribution which are not directly related to the compiler and the OCaml Standard Library. For <a href="https://github.com/ocaml/ocaml/tree/4.06.0">OCaml 4.06.0</a> it was the turn of the <a href="https://github.com/ocaml/num">Num</a> library. It is now available as the <a href="https://opam.ocaml.org/packages/num">num package</a> in opam for OCaml 4.06.0 and with a dummy <code class="language-plaintext highlighter-rouge">.0</code> version which is “installed” for prior versions of the compiler which include the library in the distribution.</p>···<p>All of which means macOS Homebrew users may wish to clean up their system compiler in advance. It’s fairly easy to do: it just means deleting <code class="language-plaintext highlighter-rouge">arith_flags.*</code>, <code class="language-plaintext highlighter-rouge">arith_status.*</code>, <code class="language-plaintext highlighter-rouge">big_int.*</code>, <code class="language-plaintext highlighter-rouge">int_misc.*</code>. <code class="language-plaintext highlighter-rouge">nat.*</code>, <code class="language-plaintext highlighter-rouge">ratio.*</code>, <code class="language-plaintext highlighter-rouge">nums.*</code>, <code class="language-plaintext highlighter-rouge">libnums.*</code> and <code class="language-plaintext highlighter-rouge">stublibs/dllnums.*</code> from the directory given by <code class="language-plaintext highlighter-rouge">ocamlc -where</code>. <a href="https://github.com/ocaml/opam-repository/pull/11300">PR#11300</a> adds this advice to the num package.</p>-<p>We’ll try to be a little more careful when the <code class="language-plaintext highlighter-rouge">graphics</code> and <code class="language-plaintext highlighter-rouge">str</code> libraries are eventually removed from the compiler!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Probabilistic Programming in OCaml</title><link href="https://anil.recoil.org/ideas/prob-programming-owl" rel="alternate"></link><published>2018-01-01T00:00:00Z</published><updated>2018-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/prob-programming-owl</id><summary type="html"><h1>Probabilistic Programming in OCaml</h1><p>This is an idea proposed in 2018 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Hari Chandrasekaran</a>. It was co-supervised with <a class="contact" href="https://github.com/ctk21">Tom Kelly</a> and <a class="contact" href="https://github.com/ryanrhymes">Liang Wang</a>.</p>···<p>The dissertation is not available online; contact <a class="contact" href="https://anil.recoil.org/">Hari Chandrasekaran</a> directly to obtain a-copy.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Interspatial OS</title><link href="https://anil.recoil.org/projects/osmose" rel="alternate"></link><published>2018-01-01T00:00:00Z</published><updated>2018-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/osmose</id><summary type="html"><div>···<li><a href="https://anil.recoil.org/papers/2024-socc-murmuration">Scheduling for Reduced Tail Task Latencies in Highly Utilized Datacenters</a> which explores a decentralised scheduling architecture for lower job completion times</li>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CausalRPC: a traceable distributed computation framework</title><link href="https://anil.recoil.org/ideas/causal-rpc" rel="alternate"></link><published>2018-01-01T00:00:00Z</published><updated>2018-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/causal-rpc</id><summary type="html"><h1>CausalRPC: a traceable distributed computation framework</h1><p>This is an idea proposed in 2018 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://craigfe.io">Craig Ferguson</a>.</p><p>The project aims to implement an RPC framework in OCaml using the <a href="https://github.com/mirage/irmin">Irmin</a> distributed database library as a network substrate. It will explore the trade-offs of a novel data-oriented approach to RPC in which race conditions between clients are resolved automatically by the middleware layer. The core deliverable is a demonstration of an RPC client remotely executing functions with Irmin-serialisable parameters on a server capable of handling concurrent client requests.</p><p>The project was completed successfully, with an implementation of <a href="https://github.com/craigfe/causal-rpc">CausalRPC</a>, a distributed computation framework satisfying the above criteria. The approach of making the statefulness of RPC explicit was surprisingly effective, allowing CausalRPC to provide stronger consistency and traceability guarantees than conventional RPC systems. This broadened the scope of the project considerably, allowing for a variety of extensions to explore the inherent trade-offs of the approach. The final version of CausalRPC supported fault-tolerant worker clusters and is compatible with <a href="https://mirage.io">MirageOS</a>.</p>···<p>The project PDF writeup is publically <a href="https://www.craigfe.io/causalrpc.pdf">available</a>, and <a class="contact" href="https://craigfe.io">Craig Ferguson</a> won the G-Research Prize for Best Individual Project 2018 departmental prize.</p><p><a class="contact" href="https://craigfe.io">Craig Ferguson</a> also gave a <a href="https://ocaml.org/workshops/ocaml-workshop-2019">talk about CausalRPC</a> at the 2019 OCaml Workshop. Unfortunately the videos of that year's ICFP don't seem to have made it online, but the <a href="https://github.com/CraigFe/causal-rpc-talk">slides are available</a>.</p>-<p><a class="contact" href="https://craigfe.io">Craig Ferguson</a> followed up with a podcast where he discussed his subsequent work on Irmin in 2022:</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Back to the Future</title><link href="https://mort.io/blog/back-to-the-future/" rel="alternate"></link><published>2017-12-14T00:00:00Z</published><updated>2017-12-14T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/back-to-the-future/</id><summary type="html"><blockquote>···<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">log</span></span><span class="z-meta z-function-call z-arguments z-shell"> show<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>style</span> syslog<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>debug</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>info</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>start</span> YYYY-MM-DD <span class="z-punctuation z-separator z-continuation z-line z-shell">\</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>predicate</span> <span class="z-string z-quoted z-single z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">'</span>senderImagePath contains[cd] &quot;TimeMachine&quot;<span class="z-punctuation z-definition z-string z-end z-shell">'</span></span><span class="z-punctuation z-separator z-continuation z-line z-shell">\-</span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Quelle dommage</title><link href="https://mort.io/blog/quelle-dommage/" rel="alternate"></link><published>2017-11-05T00:00:00Z</published><updated>2017-11-05T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/quelle-dommage/</id><summary type="html"><blockquote><a href="https://mirage.io/">Mirage</a> and <a href="https://ocaml.org/opam/">OPAM</a> have moved···<li><code>dommage build ...</code> runs <code>mirage build ...</code> inside the build container</li><li><code>dommage clean ...</code> runs <code>mirage clean ...</code> inside the build container</li>-</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>Spring Loading Karabiner in the Autumn</title><link href="https://mort.io/blog/mess-with-my-keyboard/" rel="alternate"></link><published>2017-10-30T00:00:00Z</published><updated>2017-10-30T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/mess-with-my-keyboard/</id><summary type="html"><p>I recently took the plunge and upgraded my OS X. Not to vN of <em>Sierra</em> as I’d<p>Unfortunately, this toasted<sup class="footnote-reference"><a href="https://mort.io/blog/mess-with-my-keyboard/#1">1</a></sup> my carefully curated keyboard remappings as<a href="https://pqrs.org/osx/karabiner/">Karabiner</a> used a kernel extension, for which everything changed. All was not···</span></span></span><span class="z-source z-json"><span class="z-meta z-mapping z-value z-json"><span class="z-meta z-sequence z-json"> <span class="z-punctuation z-section z-sequence z-end z-json">]</span></span></span></span><span class="z-source z-json"><span class="z-meta z-mapping z-value z-json"> <span class="z-punctuation z-section z-mapping z-end z-json">}</span></span>-<p>…and that’s it. My keyboard is, once again, my castle.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>A bug-fix 12 years in the making</title><link href="https://www.dra27.uk/blog/platform/2017/10/30/ocaml-unicode.html" rel="alternate"></link><published>2017-10-30T00:00:00Z</published><updated>2017-10-30T00:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2017/10/30/ocaml-unicode</id><summary type="html"><h1 id="windows-unicode-support-in-ocaml-4060">Windows Unicode Support in OCaml 4.06.0</h1><p>In August 2005, <a href="https://caml.inria.fr/mantis/view.php?id=3771">Mantis Report #3771</a> was opened against OCaml 3.08.4 reporting that Windows applications could not read filenames containing Unicode characters. Various patches have been proposed over the last twelve years leading to <a href="https://github.com/ocaml/ocaml/pull/153">GitHub Pull Request #153</a> almost exactly 2 years ago. This last spring, Clément Franchini at <a href="http://www.altair.com">Altair</a> rebased the patch and added tests. Finally, Nicolás Ojeda Bär at <a href="https://www.lexifi.com">LexiFi</a> took on the challenge of completing the patch and minimising the diff with a view to merging in OCaml 4.06.0.</p>···<p>If your application must behave in the old way, for example if you’re concerned that you may have some filenames which do look like valid UTF-8 but should not be interpreted as such (for example, stored in a database or other data files) or if receiving UTF-8 encoded filenames back from the runtime is a problem, then it’s possible to force the runtime to disable the UTF-8 handling by setting <code class="language-plaintext highlighter-rouge">WINDOWS_UNICODE=0</code> in <code class="language-plaintext highlighter-rouge">config/Makefile</code> (i.e. you need to build an entirely separately OCaml). In this mode, internally the runtime continues to use the “Wide” versions of the Windows system calls, but instead of translating strings to and from UTF-8, the runtime uses the current locale, which was the previous behaviour.</p>-<p>C bindings on Windows which handle filenames will not break per se, but you may end up passing a UTF-8 encoded string to a Windows ANSI function which doesn’t recognise them. However, it is possible to access the functions the runtime is using to convert strings. In C, we’ve defined a new type <code class="language-plaintext highlighter-rouge">char_os</code> which is a normal <code class="language-plaintext highlighter-rouge">char</code> on Unix but a 16-bit <code class="language-plaintext highlighter-rouge">wchar_t</code> on Windows. There are functions provided for converting a UTF-8 string to and from a <code class="language-plaintext highlighter-rouge">char_os</code> string (<code class="language-plaintext highlighter-rouge">caml_stat_strdup_to_os</code> and <code class="language-plaintext highlighter-rouge">caml_stat_strdup_of_os</code>) and also an optimised function for converting a <code class="language-plaintext highlighter-rouge">char_os</code> string to an OCaml UTF-8 encoded string <code class="language-plaintext highlighter-rouge">caml_copy_string_of_os</code>. More details on this experimental API are available in the <a href="http://polychoron.fr/ocaml-beta-manual/4.06+rc1/intfc.html#sec473">manual</a>.</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Setting up OCaml’s GitHub CI for user forks</title><link href="https://www.dra27.uk/blog/platform/2017/09/27/ocaml-github-ci.html" rel="alternate"></link><published>2017-09-27T01:00:00Z</published><updated>2017-09-27T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2017/09/27/ocaml-github-ci</id><summary type="html"><p>There are various Continuous Integration (CI) systems monitoring OCaml. The most publicly visible of these are the two which run on our GitHub repository: <a href="https://travis-ci.org/ocaml/ocaml/branches">Travis</a>, which tests GNU/Linux in 32-bit and 64-bit configurations and also performs a few sanity checks on pull requests, and <a href="https://ci.appveyor.com/project/avsm/ocaml/history">AppVeyor</a> which tests some of the native Windows ports.</p><p>OCaml 4.06 was branched on 18 September. One of the problems that we face during the weeks between branching and a release of OCaml is that the increased activity creates huge pressure on our CI systems. This is particularly noticeable on AppVeyor, since the build takes 40–50 minutes and we can only have 1 build running at a time across all pull requests and branches. Travis builds actually take around the same amount of overall time, but they are more parallelised, taking 20–25 minutes to complete.</p>···<p>Of course, nothing prevents you from making Pull Requests against your own OCaml fork before making your final pull request to the main repository. This way, you get the usual familiar monitoring in the GitHub pull request page:</p>-<p><img alt="Local GitHub PR" src="https://www.dra27.uk/assets/2017-09-27/2017-09-27-ocaml-github-ci-7.png" /></p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>State of the OCaml Platform</title><link href="https://anil.recoil.org/news/2f824dde-e112-4f4f-890d-1825572ea1c4-1" rel="alternate"></link><published>2017-09-08T01:00:00Z</published><updated>2017-09-08T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2f824dde-e112-4f4f-890d-1825572ea1c4-1</id><summary type="html"><p>Talk on the state of the OCaml Platform</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Windows Console Performance (or lack thereof)</title><link href="https://www.dra27.uk/blog/platform/2017/09/06/windows-console-fun.html" rel="alternate"></link><published>2017-09-06T01:00:00Z</published><updated>2017-09-06T01:00:00Z</updated><author><name></name></author><id>https://www.dra27.uk/blog/platform/2017/09/06/windows-console-fun</id><summary type="html"><p>I spent a few days at the weekend refreshing my native Windows fork of Opam and while doing so, found an interesting performance issue for console applications on Windows.</p><p>One of the jobs porting both Opam and opam-repository for native Windows is updating all the OCaml compiler packages themselves to have Windows build commands. It’s quite extensive, since the instructions have varied across versions and there are also a lot of <a href="https://github.com/metastack/ocaml-legacy">patches</a> which need to be applied, so this is done using an <code class="language-plaintext highlighter-rouge">opam-admin.top</code> script. This little helper program in the Opam developer tools includes a useful function <code class="language-plaintext highlighter-rouge">Opam_admin_top.iter_packages</code> which passes every package definition in a repository along with its <code class="language-plaintext highlighter-rouge">opam</code> file to a function you provide and writes any changes to that opam back to the repository.</p>···<p>So opam-admin.top now has some rate limiting code for the status messages - the script now only takes half a minute to run, and the output even looks nicer. Moral of the story is clear: never write more to the console than you have to.</p>-<p>This needs a little further investigation - it’ll be interesting to see if the Windows 10 console host offers any improvements and it would be good to have comparison numbers for a Linux distro.</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>The State of the OCaml Platform: Sep 2017</title><link href="https://anil.recoil.org/news/2017-oud-platform-1" rel="alternate"></link><published>2017-09-01T01:00:00Z</published><updated>2017-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2017-oud-platform-1</id><summary type="html"><p>Annual update on the OCaml Pltform at ICFP</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-oud-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Effectively tackling the awkward squad</title><link href="https://anil.recoil.org/news/2017-ml-effects-1" rel="alternate"></link><published>2017-09-01T01:00:00Z</published><updated>2017-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2017-ml-effects-1</id><summary type="html"><p>Paper on how to tackle awkward IO patterns with effect handlers</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-ml-effects.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Platforms, Packaging, Progress— Addendum</title><link href="https://mort.io/blog/topkg-addendum/" rel="alternate"></link><published>2017-09-01T01:00:00Z</published><updated>2017-09-01T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/topkg-addendum/</id><summary type="html"><p>This is a short addendum to my <a href="http://mort.io/blog/2017/08/28/past-present-future/">post of a couple of dayscarelessness in writing the <a href="https://github.com/mor1/ocal/blob/13a9a7f5b8f2e0be4c2b55941a00a885df202cf8/ocal.opam#L16-L22">OPAM···-be…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Platforms, Packaging, Progress</title><link href="https://mort.io/blog/past-present-future/" rel="alternate"></link><published>2017-08-28T01:00:00Z</published><updated>2017-08-28T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/past-present-future/</id><summary type="html"><p>I recently decided to refresh and update my <a href="https://github.com/mor1/ocal/">ocal</a> package,<sup class="footnote-reference"><a href="https://mort.io/blog/past-present-future/#1">1</a></sup> primarily toport it to use the excellent <a href="https://github.com/pqwy/notty/">notty</a> before adding support for indicating···eyes) metadata, autogeneration of more of the repeated metadata (<code>.merlin</code> etc),and a reasonably simple <a href="https://github.com/mor1/ocal/blob/0.2.0/Makefile"><code>Makefile</code></a> that I actually think I understand.-Definitely progress :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>ARMing LinuxKit</title><link href="https://mort.io/blog/arming-linuxkit/" rel="alternate"></link><published>2017-06-02T01:00:00Z</published><updated>2017-06-02T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/arming-linuxkit/</id><summary type="html"><p>As some may know, following the <a href="https://unikernels.com">Unikernel Systems</a> acquisition, Icurrently do contract work for <a href="https://docker.com">Docker Inc.</a> in addition to my day jobhere at the <a href="https://www.cl.cam.ac.uk">Cambridge University Computer Laboratory</a>. Recently this hascentred on <a href="https://github.com/linuxkit/linuxkit">LinuxKit</a>, “<em>A toolkit for building secure, portable and lean···like to provide patches to, e.g., support network devices on <a href="https://packet.net">packet.net</a>,please <a href="mailto:mort@cantab.net">get in touch</a>, file an issue or send a pull-request!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Opening discuss.ocaml.org for the community</title><link href="https://anil.recoil.org/notes/opening-discuss-ocaml" rel="alternate"></link><published>2017-05-13T01:00:00Z</published><updated>2017-05-13T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/opening-discuss-ocaml</id><summary type="html"><p>I opened up a <a href="https://discourse.org">Discourse</a> forum for the OCaml community to use, which is running successfully on https://discuss.ocaml.org. This forum thread collates the feedback and discussions about it.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Docker Docker</title><link href="https://mort.io/blog/docker-docker/" rel="alternate"></link><published>2017-05-06T01:00:00Z</published><updated>2017-05-06T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/docker-docker/</id><summary type="html"><h1 id="bootstrapping-docker-for-arm64-aka-aarch64"><a class="zola-anchor" href="https://mort.io/blog/docker-docker/#bootstrapping-docker-for-arm64-aka-aarch64">Bootstrapping Docker for ARM64 (aka AARCH64)</a></h1><li>bootstrap ARM64 <code>go</code> toolchain on x86, and install</li>···<li><code>DOCKER_BUILDTAGS</code> environment variable no longer supported?</li><li><code>1.12.3</code> and <code>1.13.1</code> also built</li>-</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>DaLi: Database as a Library</title><link href="https://anil.recoil.org/news/2017-snapl-dali-1" rel="alternate"></link><published>2017-05-01T01:00:00Z</published><updated>2017-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2017-snapl-dali-1</id><summary type="html"><p>Position paper on building databases-as-a-library at SNAPL 2017</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-snapl-dali.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Lab GitLab</title><link href="https://mort.io/blog/lab-gitlab/" rel="alternate"></link><published>2017-04-19T01:00:00Z</published><updated>2017-04-19T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/lab-gitlab/</id><summary type="html"><p>Recently had cause to do this as part of the <a href="https://www.cl.cam.ac.uk/research/srg/">SRG’s</a> and <a href="https://ocamllabs.io/">OCaml Labs</a>Assuming your local <code>sys-admin</code> has kindly created you a suitable VM running···<a href="http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending">http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending</a>.</p><pre class="language-ruby z-code"><code class="language-ruby"><span class="z-source z-ruby"><span class="z-support z-class z-ruby">Notify</span><span class="z-punctuation z-accessor z-dot z-ruby">.</span>test_email<span class="z-punctuation z-definition z-group z-begin z-ruby">(</span><span class="z-meta z-string z-ruby"><span class="z-string z-quoted z-single z-ruby"><span class="z-punctuation z-definition z-string z-begin z-ruby">'</span>your@email.address, <span class="z-punctuation z-definition z-string z-end z-ruby">'</span></span></span><span class="z-variable z-other z-constant z-ruby">Hello</span> <span class="z-variable z-other z-constant z-ruby">World</span><span class="z-meta z-string z-ruby"><span class="z-string z-quoted z-single z-ruby"><span class="z-punctuation z-definition z-string z-begin z-ruby">'</span>, <span class="z-punctuation z-definition z-string z-end z-ruby">'</span></span></span><span class="z-variable z-other z-constant z-ruby">This</span> is a <span class="z-support z-function z-builtin z-ruby">test</span> message<span class="z-meta z-string z-ruby"><span class="z-string z-quoted z-single z-ruby"><span class="z-punctuation z-definition z-string z-begin z-ruby">'</span>).deliver_now-</span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Google screening</title><link href="https://mort.io/blog/google-screening/" rel="alternate"></link><published>2017-01-29T00:00:00Z</published><updated>2017-01-29T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/google-screening/</id><summary type="html"><p>Some time ago, for reasons best known to themselves, a Google recruiter decidedto “reach out” on the basis of <a href="https://github.com/mor1/">my GitHub profile</a> to···-<p>I said No. They haven’t called back since. Oh well…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Customising Homebrew service</title><link href="https://mort.io/blog/brew-plist/" rel="alternate"></link><published>2017-01-04T00:00:00Z</published><updated>2017-01-04T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/brew-plist/</id><summary type="html"><p>As I could never remember the command to start the <code>offlineimap</code> service using<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">brew</span></span><span class="z-meta z-function-call z-arguments z-shell"> services start offlineimap <span class="z-meta z-group z-expansion z-tilde"><span class="z-variable z-language z-tilde z-shell">~</span></span>/rc-files/homebrew.mxcl.offlineimap.plist</span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Building Up Your ARMs</title><link href="https://mort.io/blog/building-up-your-arms/" rel="alternate"></link><published>2016-11-16T00:00:00Z</published><updated>2016-11-16T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/building-up-your-arms/</id><summary type="html"><p>Due to the impending finish of the EU FP7 funded <a href="https://usercentricnetworking.eu">User CentricNetworking</a><sup class="footnote-reference"><a href="https://mort.io/blog/building-up-your-arms/#1">1</a></sup> I recently had cause to revisit the excellent work that···-</div></summary><category term="mort’s mythopœia"></category></entry><entry><title>Debugging with jQuery</title><link href="https://mort.io/blog/jquery-console/" rel="alternate"></link><published>2016-11-16T00:00:00Z</published><updated>2016-11-16T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/jquery-console/</id><summary type="html"><p>I had cause to do this recently, so here’re the runes from<a href="http://stackoverflow.com/questions/7474354/include-jquery-in-the-javascript-console">http://stackoverflow.com/questions/7474354/include-jquery-in-the-javascript-console</a><pre class="language-javascript z-code"><code class="language-javascript"><span class="z-source z-ts"><span class="z-meta z-var z-expr z-ts"><span class="z-storage z-type z-ts">var</span> <span class="z-meta z-var-single-variable z-expr z-ts"><span class="z-meta z-definition z-variable z-ts"><span class="z-variable z-other z-readwrite z-ts">script</span></span> </span><span class="z-keyword z-operator z-assignment z-ts">=</span> <span class="z-meta z-function-call z-ts"><span class="z-support z-variable z-dom z-ts">document</span><span class="z-punctuation z-accessor z-ts">.</span><span class="z-support z-function z-dom z-ts">createElement</span></span><span class="z-meta z-brace z-round z-ts">(</span><span class="z-string z-quoted z-single z-ts"><span class="z-punctuation z-definition z-string z-begin z-ts">'</span>script<span class="z-punctuation z-definition z-string z-end z-ts">'</span></span><span class="z-meta z-brace z-round z-ts">)</span></span><span class="z-punctuation z-terminator z-statement z-ts">;</span></span><span class="z-source z-ts"><span class="z-variable z-other z-object z-ts">script</span><span class="z-punctuation z-accessor z-ts">.</span><span class="z-variable z-other z-property z-ts">src</span> <span class="z-keyword z-operator z-assignment z-ts">=</span> <span class="z-string z-quoted z-double z-ts"><span class="z-punctuation z-definition z-string z-begin z-ts">&quot;</span>https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js<span class="z-punctuation z-definition z-string z-end z-ts">&quot;</span></span><span class="z-punctuation z-terminator z-statement z-ts">;</span></span><span class="z-source z-ts"><span class="z-meta z-function-call z-ts"><span class="z-support z-variable z-dom z-ts">document</span><span class="z-punctuation z-accessor z-ts">.</span><span class="z-support z-function z-dom z-ts">getElementsByTagName</span></span><span class="z-meta z-brace z-round z-ts">(</span><span class="z-string z-quoted z-single z-ts"><span class="z-punctuation z-definition z-string z-begin z-ts">'</span>head<span class="z-punctuation z-definition z-string z-end z-ts">'</span></span><span class="z-meta z-brace z-round z-ts">)</span><span class="z-meta z-array z-literal z-ts"><span class="z-meta z-brace z-square z-ts">[</span><span class="z-constant z-numeric z-decimal z-ts">0</span><span class="z-meta z-brace z-square z-ts">]</span></span><span class="z-meta z-function-call z-ts"><span class="z-punctuation z-accessor z-ts">.</span><span class="z-support z-function z-dom z-ts">appendChild</span></span><span class="z-meta z-brace z-round z-ts">(</span><span class="z-variable z-other z-readwrite z-ts">script</span><span class="z-meta z-brace z-round z-ts">)</span><span class="z-punctuation z-terminator z-statement z-ts">;</span>-</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Zen and the Art of Research Management</title><link href="https://mort.io/blog/zen-and-the-art-of-research-management/" rel="alternate"></link><published>2016-11-11T00:00:00Z</published><updated>2016-11-11T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/zen-and-the-art-of-research-management/</id><summary type="html"><p>I think this is a bit of a classic, the first written form of which I cameacross in <a href="https://www.cl.cam.ac.uk/misc/obituaries/needham/">Prof. Roger Needham</a>’s <a href="https://www.cl.cam.ac.uk/events/50+5/">50+5 Festschrift</a> celebrating histime at the <a href="https://www.cl.cam.ac.uk/">Cambridge University Computer Lab</a> and<a href="https://www.microsoft.com/en-us/research/lab/microsoft-research-cambridge/">Microsoft Research Cambridge</a>. I don’t know who originated it, but the···-</ol></summary><category term="mort’s mythopœia"></category></entry><entry><title>Evolving the Unikernel Revolution</title><link href="https://mort.io/blog/unikernel-revolution/" rel="alternate"></link><published>2016-11-10T00:00:00Z</published><updated>2016-11-10T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/unikernel-revolution/</id><summary type="html"><p>I’ve had the pleasure of giving a couple of talks at some fun venues recently,extolling both the virtues of <a href="http://unikernel.org/">unikernels</a> and talking a bit about where we<p>Specifically, <a href="https://operability.io/">Operability.io 2016</a> a couple of weeks ago was enlightening···-on <a href="https://twitter.com/mort___">Twitter</a>!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Rat Racing Jetlag</title><link href="https://mort.io/blog/jetlag-fasting/" rel="alternate"></link><published>2016-11-04T00:00:00Z</published><updated>2016-11-04T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/jetlag-fasting/</id><summary type="html"><p>As I’ve found myself repeating the same information several times recently, and···as far as I know and have experienced, fasting means <strong>no</strong> calories,-<strong>including alcohol</strong>, even it it’s free… :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Unikernels: the rise of the library hypervisor in MirageOS</title><link href="https://anil.recoil.org/news/725dda70-b12b-4b1a-a8ae-fa9c22683ff2-1" rel="alternate"></link><published>2016-10-14T01:00:00Z</published><updated>2016-10-14T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/725dda70-b12b-4b1a-a8ae-fa9c22683ff2-1</id><summary type="html"><p>DockerCon talk on unikernels and MirageOS</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Grubbing Around</title><link href="https://mort.io/blog/grubbing-around/" rel="alternate"></link><published>2016-09-13T01:00:00Z</published><updated>2016-09-13T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/grubbing-around/</id><summary type="html"><p>Nothing earth-shattering here: I recently had the “pleasure” of setting up an···-{% endhighlight %}</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>MirageOS Summer 2016 hack retreat</title><link href="https://mirage.io/blog/2016-summer-hackathon" rel="alternate"></link><published>2016-06-29T01:00:00Z</published><updated>2016-06-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/mirageos-hack-retreat-2016</id><summary type="html"></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The functional innards of Docker for Mac and Windows</title><link href="https://anil.recoil.org/news/dbd7546a-95d8-40af-b286-3cf930767682-1" rel="alternate"></link><published>2016-06-24T01:00:00Z</published><updated>2016-06-24T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/dbd7546a-95d8-40af-b286-3cf930767682-1</id><summary type="html"><p>I gave a talk at the <a href="https://functional.works-hub.com">Functional Works</a> meetup, held in <a href="https://janestreet.com">Jane Street London</a> about how Docker for Mac and Windows use OCaml and unikernels <a href="https://www.docker.com/blog/docker-unikernels-open-source/">under the hood</a>.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ian Eyberg, Joshua Bernstein, Anil Madhavapeddy at OSCON in Austin</title><link href="https://anil.recoil.org/news/8c92d6cf-3e05-429f-8c8e-094f77be61c6-1" rel="alternate"></link><published>2016-06-06T01:00:00Z</published><updated>2016-06-06T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/8c92d6cf-3e05-429f-8c8e-094f77be61c6-1</id><summary type="html"><p>Interviewed by The New Stack at OSCON in Austin, Texas</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>FLICK: Developing and Running Application-Specific Network Services</title><link href="https://anil.recoil.org/news/2016-usenix-flick-1" rel="alternate"></link><published>2016-06-01T01:00:00Z</published><updated>2016-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2016-usenix-flick-1</id><summary type="html"><p>Paper on application-specific network services at USENIX ATC 2016</p>···&nbsp; <a href="https://anil.recoil.org/papers/2016-usenix-flick.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Improving Docker with Unikernels</title><link href="https://anil.recoil.org/notes/vpnkit-hyperkit" rel="alternate"></link><published>2016-05-18T01:00:00Z</published><updated>2016-05-18T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/vpnkit-hyperkit</id><summary type="html"><p>I announce the release of three big components that form the basis for <a href="https://docker.com">Docker for Desktop</a>: a hypervisor framework called HyperKit, a networking framework for host translation called VPNKit, and a versioned data management store called DataKit.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Local Knowledge</title><link href="https://mort.io/blog/local-knowledge/" rel="alternate"></link><published>2016-03-11T00:00:00Z</published><updated>2016-03-11T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/local-knowledge/</id><summary type="html"><p>A relatively long hiatus this time – blame the Cambridge housing market and theAlso obtaining a <a href="http://www.christs.cam.ac.uk/content/dr-richard-mortier">College···-warnings.)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Declarative Foreign Function Binding Through Generic Programming</title><link href="https://anil.recoil.org/news/2016-flops-cmeleon-1" rel="alternate"></link><published>2016-02-01T00:00:00Z</published><updated>2016-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2016-flops-cmeleon-1</id><summary type="html"><p>Paper on declarative approaches to foreign function bindings at FLOPS 2016</p>···&nbsp; <a href="https://anil.recoil.org/papers/2016-flops-cmeleon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernel Systems is now part of Docker</title><link href="https://anil.recoil.org/news/a612e810-d56c-48af-b43e-2893a96b9120-1" rel="alternate"></link><published>2016-01-21T00:00:00Z</published><updated>2016-01-21T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/a612e810-d56c-48af-b43e-2893a96b9120-1</id><summary type="html"><p>Announced that Unikernel Systems is now part of Docker</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernel Systems acquired by Docker</title><link href="https://anil.recoil.org/notes/docker-buys-unikernel-systems" rel="alternate"></link><published>2016-01-21T00:00:00Z</published><updated>2016-01-21T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/docker-buys-unikernel-systems</id><summary type="html"><p>My startup <a href="https://anil.recoil.org/projects/unikernels">Unikernel Systems</a> was acquired by <a href="https://anil.recoil.org/docker.com">Docker</a>, and I'll<p>'Just like we did with containers, we are interested is democratizing that technology, making it available and useful to the millions of developers and IT pros out there, said <a href="https://www.linkedin.com/in/solomonhykes">Solomon Hykes</a>, founder and chief technology officer for Docker. 'Unikernels allow you to basically get rid of the operating system, and instead compile into the application the small bits of the operating system it really needs.'<cite>-- <a href="https://thenewstack.io/docker-buys-unikernel-systems-plans-bring-unikernels-data-center/">The New Stack</a></cite></p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Of Mice and Keyboards</title><link href="https://mort.io/blog/elcapitan-maps/" rel="alternate"></link><published>2015-11-21T00:00:00Z</published><updated>2015-11-21T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/elcapitan-maps/</id><summary type="html"><p>A bit of a delay since the last post – lots going on! But anyway: I···terminals, one of those <em>Really Hard</em> things for computers/manufacturers to<p><em>Note: Thanks to <a href="http://www.amp-what.com/unicode/search/">http://www.amp-what.com/unicode/search/</a> for an easy way to-hunt down some of the unicode symbols used above!</em></p></summary><category term="mort’s mythopœia"></category></entry><entry><title>SibylFS: formal specification and oracle-based testing for POSIX and real-world file systems</title><link href="https://anil.recoil.org/news/2015-sosp-sibylfs-1" rel="alternate"></link><published>2015-10-01T01:00:00Z</published><updated>2015-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2015-sosp-sibylfs-1</id><summary type="html"><p>Paper on formal specificaiton and testing of filesystems at SOSP 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-sosp-sibylfs.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Personal Data: Thinking Inside the Box</title><link href="https://anil.recoil.org/news/2015-aarhus-databox-1" rel="alternate"></link><published>2015-10-01T01:00:00Z</published><updated>2015-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2015-aarhus-databox-1</id><summary type="html"><p>Paper on personal databoxes at the one-in-a-decade Aarhus conference</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-aarhus-databox.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Immutable Distributed Infrastructure with Unikernels</title><link href="https://anil.recoil.org/news/d5fbd6a4-bef2-4fbc-9d02-cb9935e50d8e-1" rel="alternate"></link><published>2015-09-29T01:00:00Z</published><updated>2015-09-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/d5fbd6a4-bef2-4fbc-9d02-cb9935e50d8e-1</id><summary type="html"><p>Invited talk at NetPL on Immutable Distributed Infrastructure with Unikernels</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The State of the OCaml Platform</title><link href="https://anil.recoil.org/news/35e1a70d-0fb4-49b1-86ce-dd6266b812de-1" rel="alternate"></link><published>2015-09-04T01:00:00Z</published><updated>2015-09-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/35e1a70d-0fb4-49b1-86ce-dd6266b812de-1</id><summary type="html"><p>Update on the state of the OCaml Platform</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Not-Quite-So-Broken TLS</title><link href="https://anil.recoil.org/news/2015-usenixsec-nqsb-1" rel="alternate"></link><published>2015-08-01T01:00:00Z</published><updated>2015-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2015-usenixsec-nqsb-1</id><summary type="html"><p>Paper on rebuilding TLS securely but practically at USENIX Security 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-usenixsec-nqsb.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Fame and Fortune!</title><link href="https://mort.io/blog/bigtechday-mirage/" rel="alternate"></link><published>2015-06-24T01:00:00Z</published><updated>2015-06-24T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/bigtechday-mirage/</id><summary type="html"><p>After a slew of HDI related items, a quick <a href="http://openmirage.org/">MirageOS</a> note. I was invited togive a presentation on MirageOS at the <a href="https://www.tngtech.com/en.html">TNG</a><a href="https://www.tngtech.com/en/big-techday.html">Big TechDay 8</a> conference. This···<a href="http://www.techcast.com/events/bigtechday8/salvator-1130/?q=salvator-1130">available</a>.</p>-<p>As ever, comments welcome!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Actual HCI Papers!</title><link href="https://mort.io/blog/ecscw-and-aarhus/" rel="alternate"></link><published>2015-06-17T01:00:00Z</published><updated>2015-06-17T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/ecscw-and-aarhus/</id><summary type="html"><p>I have to confess to being quite pleased to having a couple of<a href="http://hdiresearch.org/">HDI</a>-related papers accepted recently (even if we<a href="http://ssrn.com/abstract=2508051">original HDI paper</a> – recently judged···lives. Building a Databox, using <a href="https://mirage.io/">MirageOS</a>, is hopefully-going to be a key activity for me in the coming months…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Rescuing a Shattered Nexus 4</title><link href="https://mort.io/blog/nexus-4-rescue/" rel="alternate"></link><published>2015-05-21T01:00:00Z</published><updated>2015-05-21T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/nexus-4-rescue/</id><summary type="html"><p>A little while ago, before I’d done the smart thing and got myself a case for my···-otherwise), possibly while sobbing quietly.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Moving Onto Mirage</title><link href="https://mort.io/blog/moving-onto-mirage/" rel="alternate"></link><published>2015-05-20T01:00:00Z</published><updated>2015-05-20T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/moving-onto-mirage/</id><summary type="html"><p>For a little while I’ve had <a href="http://github.com/mor1/mor1.github.io">this site</a> running as a <a href="http://openmirage.org/">MirageOS</a>unikernel, shadowing the main site hosted on <a href="http://github.com/">GitHub</a>. I’ve finally decided to···<code>gcc</code> and <code>binutils</code> to ensure the stubs for a couple of packages (notably-<p>Next stop: adding TLS and DNS support…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Unikernels: Functional Infrastructure with Mirage OS</title><link href="https://anil.recoil.org/news/55852136-843d-4043-98e7-6b46c6d39b01-1" rel="alternate"></link><published>2015-05-12T01:00:00Z</published><updated>2015-05-12T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/55852136-843d-4043-98e7-6b46c6d39b01-1</id><summary type="html"><p>Talk at Esper on functional programming with unikernels</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Jitsu: Just-In-Time Summoning of Unikernels</title><link href="https://anil.recoil.org/news/ad4658f5-ca4f-42f3-b61a-58f13dcdeb1a-1" rel="alternate"></link><published>2015-05-04T01:00:00Z</published><updated>2015-05-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/ad4658f5-ca4f-42f3-b61a-58f13dcdeb1a-1</id><summary type="html"><p>NSDI 2015 talk on Jitsu</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Kadupul: Livin' on the Edge with Virtual Currencies and Time-Locked Puzzles</title><link href="https://anil.recoil.org/news/2015-diynet-kadupul-1" rel="alternate"></link><published>2015-05-01T01:00:00Z</published><updated>2015-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2015-diynet-kadupul-1</id><summary type="html"><p>Workshop paper on DIY networking using timelock puzzles</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-diynet-kadupul.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Jitsu: Just-In-Time Summoning of Unikernels</title><link href="https://anil.recoil.org/news/2015-nsdi-jitsu-1" rel="alternate"></link><published>2015-05-01T01:00:00Z</published><updated>2015-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2015-nsdi-jitsu-1</id><summary type="html"><p>Paper on spinning up low-latency unikernels per-connection at NSDI 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-nsdi-jitsu.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Diamonds are a Chap's Best Friend</title><link href="https://mort.io/blog/inconstant-ruby/" rel="alternate"></link><published>2015-04-09T01:00:00Z</published><updated>2015-04-09T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/inconstant-ruby/</id><summary type="html"><p>As <a href="https://mort.io/blog/2015/01/15/begin-again/">noted previously</a>, this site is basically a<a href="https://github.com/">Github</a>-hosted <a href="http://jekyllrb.com/">Jekyll</a> site at present, though one that can be built as a<a href="http://openmirage.org/">Mirage</a> unikernel. Part of the <a href="http://openmirage.org/">Mirage</a> workflow to publish a new postinvolves using <a href="https://travis-ci.org/">Travis CI</a> to build and then commit back a new unikernel···<p>And that’s all there is to it – you should now be able to call <code>jekyll</code> in your-<a href="https://travis-ci.org/">Travis</a> environment as you’d expect…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Taking it to the People People</title><link href="https://mort.io/blog/hdi-seminar/" rel="alternate"></link><published>2015-04-08T01:00:00Z</published><updated>2015-04-08T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/hdi-seminar/</id><summary type="html"><p>Looks like I get a chance to run my mouth off again :) Upcoming<a href="http://hdiresearch.org/">HDI</a> <a href="http://www.crassh.cam.ac.uk/events/26198">research···-</blockquote></summary><category term="mort’s mythopœia"></category></entry><entry><title>Reviewing the second year of OCaml Labs in 2014</title><link href="https://anil.recoil.org/notes/ocamllabs-2014-review" rel="alternate"></link><published>2015-04-02T01:00:00Z</published><updated>2015-04-02T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ocamllabs-2014-review</id><summary type="html"><p>The <a href="https://anil.recoil.org/projects/ocamllabs">OCaml Labs</a> initiative within the <a href="http://www.cl.cam.ac.uk">Cambridgeupdate at the <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/news/index.html#Dec%202013">end of···-with any queries, concerns or bars of chocolate as encouragement.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I Think Someone Else Is Also Following Me...</title><link href="https://mort.io/blog/being-followed-postscript/" rel="alternate"></link><published>2015-03-16T00:00:00Z</published><updated>2015-03-16T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/being-followed-postscript/</id><summary type="html"><p>Turns out others were listening too – notably the USA’s <a href="http://www.darpa.mil/">DARPA</a>. The recentannouncement of the <a href="http://www.darpa.mil/NewsEvents/Releases/2015/03/11.aspx">Brandeis</a> programme makes explicit reference to <a href="http://ssrn.com/abstract=2508051">HDI</a>and <a href="http://hdiresearch.org/">our website</a>. This has been picked up by <a href="http://gcn.com/articles/2015/03/12/darpa-brandeis.aspx">GCN</a>, <a href="http://www.usatoday.com/story/nation/2015/03/16/data-privacy-darpa-brandeis/70222556/">USAToday</a>,<a href="http://www.nbcnews.com/tech/security/darpa-unexpectedly-announces-program-improve-online-piracy-n322601">NBCNews</a>, <a href="http://www.engadget.com/2015/03/12/darpa-is-trying-to-reinvent-online-privacy/">Engadget</a> among others. With $60M potentially on the table, I-:)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>I Think Someone's Following Me...</title><link href="https://mort.io/blog/someones-following-me/" rel="alternate"></link><published>2015-03-02T00:00:00Z</published><updated>2015-03-02T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/someones-following-me/</id><summary type="html"><p>It’s always<sup class="footnote-reference"><a href="https://mort.io/blog/someones-following-me/#1">1</a></sup> nice when someone notices what you’re doing, and I waspleasantly surprised recently to find that someone had indeed been watching.<sup class="footnote-reference"><a href="https://mort.io/blog/someones-following-me/#2">2</a></sup></p><div class="footnote-definition" id="1"><sup class="footnote-definition-label">1</sup>···<a href="http://www.theguardian.com/profile/johnnaughton">John Naughton</a> in the <a href="http://www.theguardian.com/technology/2015/feb/01/control-personal-data-databox-end-user-agreement">Guardian</a>, which ended up with a pretty-<p>Guess we’d better get on and deliver it now then :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>ICFP 2015 - a call for sponsorship and how you can help</title><link href="https://anil.recoil.org/notes/icfp15-call-for-sponsorships" rel="alternate"></link><published>2015-02-18T00:00:00Z</published><updated>2015-02-18T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/icfp15-call-for-sponsorships</id><summary type="html"><p>The call for papers for this year’s <a href="http://icfpconference.org/icfp2015/">International Conference on Functional···<p>Platinum: $10000: As above plus: named supporter of whole event, logo on lanyards, badge ribbon, table/booth-like space available (in coffee break areas), other negotiated benefits (subject to ACM restrictions on commercial involvement).</p><p>Thank you for your time and especially for your generosity! I look forward to seeing you in Vancouver. If you are willing to be a sponsor, it would be helpful to hear back by March 9th to help us plan and budget.</p>-<p>If you are interested, please get in touch with <a href="mailto:anil@recoil.org">me</a> or any of the <a href="http://icfpconference.org/icfp2015/index.html">organizing committee</a>. If you’re interested in helping out ICFP in a non-financial capacity (for example, as a student volunteer), then there will also be plenty of opportunities to sign up later in the year.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Looping the Loop</title><link href="https://mort.io/blog/looping-the-loop/" rel="alternate"></link><published>2015-02-17T00:00:00Z</published><updated>2015-02-17T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/looping-the-loop/</id><summary type="html"><p>In a fit of blogging mania, here’s another one literally barely days after theTo whit: I recently sorted out <a href="http://mort.io/">this domain</a> and was having···is to <code>view-source</code> on the page but pass a spurious parameter to defeat thecache. So, to force the browser to fetch <a href="http://mort.io">http://mort.io</a> properly, all I had to-do was <code>view-source:mort.io?spurious=parameter</code>. And lo! All was well.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Talks, Old and New</title><link href="https://mort.io/blog/talks-old-and-new/" rel="alternate"></link><published>2015-02-14T00:00:00Z</published><updated>2015-02-14T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/talks-old-and-new/</id><summary type="html"><p>Thanks to an invitation from <a href="http://research.microsoft.com/en-us/um/people/hiballan/">Hitesh</a>, I recently got the chance to revisit myold stomping ground at <a href="http://research.microsoft.com/en-us/labs/cambridge/">Microsoft Research Cambridge</a>. Well, I say “old”···<a href="http://research.microsoft.com/apps/video/default.aspx?id=104278">Measuring and Monitoring Microsoft’s Enterprise Network</a>,-the process… :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Delivered keynote at BOB 2015 on MirageOS</title><link href="https://anil.recoil.org/news/0bc235e0-b154-4cbf-a84a-61240f16d60a-1" rel="alternate"></link><published>2015-01-23T00:00:00Z</published><updated>2015-01-23T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/0bc235e0-b154-4cbf-a84a-61240f16d60a-1</id><summary type="html"><p>I hopped over to Berlin to give the keynote at <a href="https://bobkonf.de/2015/en/">BOB 2015</a> keynote on functional operating systems. If you're in the region, I <em>highly</em> recommend attending BOB as a superbly organised conference with a diverse and interesting crowd of functional programmers.</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Begin, Again!</title><link href="https://mort.io/blog/begin-again/" rel="alternate"></link><published>2015-01-15T00:00:00Z</published><updated>2015-01-15T00:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/begin-again/</id><summary type="html"><p>Specifically, I’ve left <a href="http://www.horizon.ac.uk">Horizon</a> and the<a href="http://www.nottingham.ac.uk">University of Nottingham</a> to (re-)join the···might do to better support site generation like this in <a href="https://github.com/mirage/cowabloga">Cowabloga</a> so that I-can more seamlessly switch between <a href="http://jekyllrb.com/">Jekyll</a> and <a href="http://openmirage.org/">Mirage</a>.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Raft Refloated: Do We Have Consensus?</title><link href="https://anil.recoil.org/news/2014-sigops-raft-1" rel="alternate"></link><published>2015-01-01T00:00:00Z</published><updated>2015-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2014-sigops-raft-1</id><summary type="html"><p>Paper on reproducing the raft consensus protocol</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-sigops-raft.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mergeable persistent data structures</title><link href="https://anil.recoil.org/news/2015-jfla-irmin-1" rel="alternate"></link><published>2015-01-01T00:00:00Z</published><updated>2015-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2015-jfla-irmin-1</id><summary type="html"><p>Paper on mergeable data structures using Irmin (nee Irminsule) at JFLA 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-jfla-irmin.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CUFP'13 scribe's report</title><link href="https://anil.recoil.org/news/2013-cufp-scribe-1" rel="alternate"></link><published>2015-01-01T00:00:00Z</published><updated>2015-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2013-cufp-scribe-1</id><summary type="html"><p>Published the scribe's report for CUFP 2013 in JFP</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Codemesh 2014: Nymote: Git Your Own Cloud Here</title><link href="https://anil.recoil.org/news/644914a5-a40b-4ef7-bb17-cea43c95dd09-1" rel="alternate"></link><published>2014-12-17T00:00:00Z</published><updated>2014-12-17T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/644914a5-a40b-4ef7-bb17-cea43c95dd09-1</id><summary type="html"><p>Gave Codemesh 2014 talk on Nymote</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Jitsu: Just-in-Time Summoning of Unikernels (new directions in operating systems)</title><link href="https://anil.recoil.org/news/46968fa0-e5bd-4df8-98e1-3cf88d9b31e5-1" rel="alternate"></link><published>2014-11-25T00:00:00Z</published><updated>2014-11-25T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/46968fa0-e5bd-4df8-98e1-3cf88d9b31e5-1</id><summary type="html"><p>New Directions in Operating Systems talk on Jitsu</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Regional clouds: technical considerations</title><link href="https://anil.recoil.org/news/2014-regional-clouds-1" rel="alternate"></link><published>2014-11-01T00:00:00Z</published><updated>2014-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2014-regional-clouds-1</id><summary type="html"><p>Report on regional cloud computing law available</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-regional-clouds.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS 2.0: branch consistency for Xen Stub Domains</title><link href="https://anil.recoil.org/news/c9273fa0-802f-4d2b-8f0d-db383943564e-1" rel="alternate"></link><published>2014-10-17T01:00:00Z</published><updated>2014-10-17T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/c9273fa0-802f-4d2b-8f0d-db383943564e-1</id><summary type="html"><p>At the Xen Summit speaking about branch consistency for Xen Stub Domains</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml 2014: The OCaml Platform v1.0</title><link href="https://anil.recoil.org/news/4390c1d0-ed4f-4c01-9e10-dab2a3faed7a-1" rel="alternate"></link><published>2014-09-05T01:00:00Z</published><updated>2014-09-05T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/4390c1d0-ed4f-4c01-9e10-dab2a3faed7a-1</id><summary type="html"><p>Talk on the OCaml Platform reaching v1.0</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Haskell Symposium 2014 Keynote on functional OS design</title><link href="https://anil.recoil.org/news/ed84b2eb-1b93-4dc3-b746-63a4af13d4ea-1" rel="alternate"></link><published>2014-09-05T01:00:00Z</published><updated>2014-09-05T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/ed84b2eb-1b93-4dc3-b746-63a4af13d4ea-1</id><summary type="html"><p>Gave Haskell Symposium 2014 Keynote on functional OS design</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The OCaml Platform v1.0</title><link href="https://anil.recoil.org/news/2014-oud-platform-1" rel="alternate"></link><published>2014-09-01T01:00:00Z</published><updated>2014-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2014-oud-platform-1</id><summary type="html"><p>Paper on the OCaml Platform status</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-oud-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Multicore OCaml</title><link href="https://anil.recoil.org/news/2014-oud-multicore-1" rel="alternate"></link><published>2014-09-01T01:00:00Z</published><updated>2014-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2014-oud-multicore-1</id><summary type="html"><p>First paper on multicore OCaml's design at the OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-oud-multicore.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Irminsule: a branch-consistent distributed library database</title><link href="https://anil.recoil.org/news/2014-oud-irminsule-1" rel="alternate"></link><published>2014-09-01T01:00:00Z</published><updated>2014-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2014-oud-irminsule-1</id><summary type="html"><p>Paper at the OCaml Workshop on the Irmin database library</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-oud-irminsule.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Talks from OCaml Labs during ICFP 2014</title><link href="https://anil.recoil.org/notes/ocaml-labs-at-icfp-2014" rel="alternate"></link><published>2014-08-31T01:00:00Z</published><updated>2014-08-31T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ocaml-labs-at-icfp-2014</id><summary type="html"><p>It's the ever-exciting week of the <a href="https://icfpconference.org/">International Conference on···sometime after 8pm at <a href="http://www.3vaningen.se/">3vaningen</a>. Sounds like-Gothenburg soon!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>FLOSS Weekly 302: Open Mirage</title><link href="https://anil.recoil.org/news/5cdf2eef-9053-428e-b8b3-ab5ae274c129-1" rel="alternate"></link><published>2014-07-23T01:00:00Z</published><updated>2014-07-23T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/5cdf2eef-9053-428e-b8b3-ab5ae274c129-1</id><summary type="html"><p>Appeared on FLOSS Weekly 302 about Open Mirage</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS v2.0: a recap of new features</title><link href="https://anil.recoil.org/notes/announcing-mirageos-2" rel="alternate"></link><published>2014-07-22T01:00:00Z</published><updated>2014-07-22T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/announcing-mirageos-2</id><summary type="html"><p>This is a big release for us; after the first version came out earlier in the year, we added in support for ARM devices, a new storage subsystem called <a href="https://irmin.org">Irmin</a> and even a pure OCaml TLS stack.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS v1.2 released and the runup to 2.0</title><link href="https://anil.recoil.org/notes/announcing-mirageos-1-2" rel="alternate"></link><published>2014-07-08T01:00:00Z</published><updated>2014-07-08T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/announcing-mirageos-1-2</id><summary type="html"><p>I announce a point release of MirageOS 1.x, and the exciting run up to the major MirageOS 2.0 release which has lots of new features. The number of Mirage users is growing steadily!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>SE Radio Episode 204: Anil Madhavapeddy on the Mirage Cloud Operating System and the OCaml Language</title><link href="https://anil.recoil.org/news/d5411e25-7845-41e8-b3ec-ab3c33ce13c8-1" rel="alternate"></link><published>2014-05-01T01:00:00Z</published><updated>2014-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/d5411e25-7845-41e8-b3ec-ab3c33ce13c8-1</id><summary type="html"><p>Appeared on SE Radio Episode 204 about Mirage and OCaml</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Codio: build Mirage unikernels from a browser</title><link href="https://anil.recoil.org/notes/codio-now-has-opam-support" rel="alternate"></link><published>2014-03-26T00:00:00Z</published><updated>2014-03-26T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/codio-now-has-opam-support</id><summary type="html"><p>I noticed an offhand tweet from Phil Tomson about <a href="http://codio.com/">Codio</a> adding OPAM support, and naturally had to take a quick look. I was <em>really</em> impressed by the whole process, and ended up building the <a href="https://web.archive.org/web/20170914182531/http://www.openmirage.org/wiki/mirage-www">Mirage Xen website</a> unikernel directly from my web browser in less than a minute, including registration!</p><li>I signed up to Codio for free (since it’s <a href="https://web.archive.org/web/20170914182531/https://codio.com/avsm/Mirage-WWW/">a public project</a>) using GitHub oAuth (only public identity access required at first, no repository access).</li><li>Selected a <code>git</code> project and pointed it at the <a href="https://web.archive.org/web/20170914182531/https://github.com/mirage/mirage-www">mirage-www</a> repository.</li>···<p>Then have a cup of coffee while the box builds, and you have a <code>mir-www.xen</code>, all from your web browser! Codio has a number of deployment options available too, so you should be able to hook up a <a href="https://web.archive.org/web/20170914182531/http://amirchaudhry.com/from-jekyll-to-unikernel-in-fifty-lines/">Git-based workflow</a> using some combination of Travis or other CI service.</p>-<p>This is the first time I’ve ever been impressed by an online editor, and might consider moving away from my beloved vi...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Easily OPAM switching to any OCaml feature request</title><link href="https://anil.recoil.org/notes/ocaml-github-and-opam" rel="alternate"></link><published>2014-03-25T00:00:00Z</published><updated>2014-03-25T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ocaml-github-and-opam</id><summary type="html"><p>Gabriel Scherer <a href="http://gallium.inria.fr/blog/patch-review-on-github/">announced an<a href="https://github.com/ocaml/ocaml/pulls">GitHub</a> for six months. There is···corresponding pull request is closed. Just run <code>opam update</code> to retrievethe latest switch set from the upstream <a href="https://github.com/ocaml/opam-repository">OPAM package-repository</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>ICFP 2014 - a call for sponsorship and how you can help</title><link href="https://anil.recoil.org/notes/icfp-call-for-sponsorships" rel="alternate"></link><published>2014-03-03T00:00:00Z</published><updated>2014-03-03T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/icfp-call-for-sponsorships</id><summary type="html"><p>The call for papers for this year’s <a href="http://icfpconference.org/icfp2014/">International Conference on Functional Programming</a> has just closed, with around a hundred cutting-edge research papers submitted on the theory, application, and experiences behind functional programming. This marks just the beginning of sorting out the program, as there are also over 10 big <a href="http://icfpconference.org/icfp2014/affiliated.html">affiliated workshops</a> that run throughout the week on topics ranging from specific languages (<a href="http://www.erlang.org/workshop/2014/">Erlang</a>, <a href="http://www.haskell.org/haskellwiki/HaskellImplementorsWorkshop">Haskell</a>, <a href="http://ocaml.org/meetings/ocaml/2014/">OCaml</a>), the broader <a href="http://cufp.org/">commercial community</a>, and even <a href="http://functional-art.org/">art and music</a>.</p><p>The ICFP conference experience can be a remarkable one for students. Some great ideas have emerged from random corridor conversations between talks with the likes of <a href="http://homepages.inf.ed.ac.uk/wadler/">Phil Wadler</a>, or from rain-soaked discussions with <a href="http://research.microsoft.com/en-us/people/simonpj/">Simon PJ</a> at <a href="http://mikkeller.dk/">Mikeller</a>, or in my case, from being convinced to <a href="https://blogs.janestreet.com/the-making-of-real-world-ocaml/">write a book</a> while in a smoky Tokyo bar.</p><p>Functional programming worldwide has been growing ever more popular in 2014 (and <a href="http://whatsapp.com/">lucrative</a>). We’re committed to growing the ICFP community, not just in numbers but also in diversity. We had a record number of sponsors in 2013, and sustaining the growth means that we need to reach ever wider to support the activities of the (not-for-profit) conference.</p><p>So as this year’s industrial relations chair, I thought I’d throw the gates open and <strong>invite any organization that wishes to support FP to get in touch with us</strong> (e-mail at <code>avsm2@cl.cam.ac.uk</code>) and sponsor us. I’ve put an abridged version of the e-mail solicitation below that describes the benefits. Sponsorship can start as low as $500 and is often tax deductible in many countries.</p>···<p><strong>Platinum:</strong> $10000: As above plus: named supporter of whole event, logo on lanyards, badge ribbon, table/booth-like space available (in coffee break areas), other negotiated benefits (subject to ACM restrictions on commercial involvement).</p><p>If you are interested, please get in touch with <a href="mailto:anil@recoil.org">me</a> or any of the <a href="http://icfpconference.org/icfp2014/index.html">organizing committee</a>.-If you’re interested in helping out ICFP in a non-financial capacity (for example as a student volunteer), then there will also be plenty of opportunity to sign up later in the year.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using Dust Clouds to Enhance Anonymous Communication</title><link href="https://anil.recoil.org/news/2010-iswp-dustclouds-1" rel="alternate"></link><published>2014-03-01T00:00:00Z</published><updated>2014-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2010-iswp-dustclouds-1</id><summary type="html"><p>Paper on building dust clouds for anonymous communication</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-iswp-dustclouds.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels, and the Rise of the Virtual Library Operating System</title><link href="https://anil.recoil.org/notes/unikernels-in-cacm" rel="alternate"></link><published>2014-01-13T00:00:00Z</published><updated>2014-01-13T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/unikernels-in-cacm</id><summary type="html"><p>The Communications of the ACM have just published an article that <a class="contact" href="https://github.com/djs55">Dave Scott</a> and I wrote providing a broader background on the concept of <a href="http://anil.recoil.org/papers/2013-asplos-mirage.pdf">Unikernels</a> that we’ve been working on since about 2003, when we started building <a href="http://anil.recoil.org/papers/2007-eurosys-melange.pdf">Melange</a> and the <a href="http://anil.recoil.org/papers/2010-icfp-xen.pdf">Xen toolstack</a>. You can read either the <a href="http://cacm.acm.org/magazines/2014/1/170866-unikernels">print article</a> (requires an ACM subscription) or the <a href="http://queue.acm.org/detail.cfm?id=2566628">open access version</a> on the ACM Queue.</p><p><figure class="image-right"><img alt="" class="content-image" src="https://anil.recoil.org/images/acm-queue-unikernels-ss.webp" title="" /><figcaption></figcaption></figure>···<li>Ensemble (website now offline but here’s a <a href="http://www.cs.uni-potsdam.de/ti/kreitz/PDF/99sosp-fastpath.pdf">SOSP 1999 paper</a>) is a group communication system written in OCaml, developed at Cornell and the Hebrew University. For an application builder, Ensemble provides a library of protocols that can be used for quickly building complex distributed applications. For a distributed systems researcher, Ensemble is a highly modular and reconfigurable toolkit: the high-level protocols provided to applications are really stacks of tiny protocol “layers,” each of whose can be modified or rebuilt to experiment.</li><p>Both Ensemble and FoxNet made strong echoes throughout the design of Mirage (and its precursor software such as <a href="http://anil.recoil.org/papers/2007-eurosys-melange.pdf">Melange</a> in 2007). The <a href="http://openmirage.org/wiki/hello-world">Mirage command-line tool</a> uses staged computation to build a concrete application out of functors, and we are making this even more programmable via a new <a href="https://github.com/mirage/mirage/pull/178">combinator-based functor types</a> library that <a href="http://gazagnaire.org/">Thomas Gazagnaire</a> built, and also experimenting with <a href="https://github.com/ocamllabs/higher">higher kinded polymorphic</a> abstractions.</p>-<p>My thanks to Butler Lampson and Robert Harper for making me go re-read their papers again, and I’d like to leave you with Malte Schwarzkopf’s <a href="http://www.cl.cam.ac.uk/~ms705/netos/os-reading-group.html">OS Reading Group</a> papers for other essential reading in this space. Many more citations immediately relevant to Mirage can also be found in our <a href="http://anil.recoil.org/papers/2013-asplos-mirage.pdf">ASPLOS 2013</a> paper.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Not-quite-so-broken TLS in OCaml</title><link href="https://anil.recoil.org/ideas/nqsb-tls" rel="alternate"></link><published>2014-01-01T00:00:00Z</published><updated>2014-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/nqsb-tls</id><summary type="html"><h1>Not-quite-so-broken TLS in OCaml</h1><p>This is an idea proposed in 2014 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/hannesm">Hannes Mehnert</a> and <a class="contact" href="https://github.com/pqwy">David Kaloper-Mersinjak</a>. It was co-supervised with <a class="contact" href="https://www.cl.cam.ac.uk/~pes20/">Peter Sewell</a>.</p><p>Transport Layer Security (TLS) implementations have a history of security flaws. The immediate causes of these are often programming errors, e.g. in memory manage- ment, but the root causes are more fundamental: the challenges of interpreting the ambiguous prose specification, the complexities inherent in large APIs and code bases, inherently unsafe programming choices, and the impossibility of directly testing conformance between implementations and the specification.</p><p>This internship was to work on nqsb-TLS, our re-engineered approach to security protocol specification and implementation that addresses the above root causes. The same source code serves two roles: it is both a specification of TLS, executable as a test oracle to check conformance of traces from arbitrary implementations, and a usable implementation of TLS; a modular and declarative programming style provides clean separation between its components. Many security flaws are thus excluded by construction.</p>···<li><a class="contact" href="https://github.com/hannesm">Hannes Mehnert</a> and <a class="contact" href="https://github.com/pqwy">David Kaloper-Mersinjak</a> worked on this in an internship after discovering the MirageOS project online, and came over in the summer of 2014. The results have been hguely successful within the OCaml community, as the <a href="https://github.com/mirleft/ocaml-tls">ocaml-tls</a> is still widely used as the defacto TLS stack in many popular OCaml applications.</li><li>The paper was published in USENIX Security; see <a href="https://anil.recoil.org/papers/2015-usenixsec-nqsb">Not-Quite-So-Broken TLS</a>.</li><li>For other stuff that happened during that internship period, see <a href="https://anil.recoil.org/notes/ocamllabs-2014-review">Reviewing the second year of OCaml Labs in 2014</a>.</li>-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Consolidating Trust for Client Groups that use TLS to Secure Connections</title><link href="https://anil.recoil.org/ideas/scaling-tls-trust" rel="alternate"></link><published>2014-01-01T00:00:00Z</published><updated>2014-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/scaling-tls-trust</id><summary type="html"><h1>Consolidating Trust for Client Groups that use TLS to Secure Connections</h1><p>This is an idea proposed in 2014 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Johann Beleites</a>. It was co-supervised with <a class="contact" href="https://anil.recoil.org/">David Sheets</a>.</p>···-features.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reviewing the first year of OCaml Labs in 2013</title><link href="https://anil.recoil.org/notes/the-year-in-ocamllabs" rel="alternate"></link><published>2013-12-29T00:00:00Z</published><updated>2013-12-29T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/the-year-in-ocamllabs</id><summary type="html"><p>This time last year in 2012, I had just<a href="https://anil.recoil.org/2012/10/19/announcing-ocaml-labs.html">announced</a>the formation of a new group called <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/">OCaml···<p><figure class="image-center"><img alt="A successful FPDays tutorial in Cambridge, with all attendees getting a free copy of RWO!" class="content-image" src="https://anil.recoil.org/images/fpdays2013-04.webp" title="A successful FPDays tutorial in Cambridge, with all attendees getting a free copy of RWO!" /><figcaption>A successful FPDays tutorial in Cambridge, with all attendees getting a free copy of RWO!</figcaption></figure>-</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using Docker to bulk-build OPAM packages on Linux</title><link href="https://anil.recoil.org/notes/docker-and-opam" rel="alternate"></link><published>2013-11-15T00:00:00Z</published><updated>2013-11-15T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/docker-and-opam</id><summary type="html"><p>Now that OCaml 4.01 has been released, there is a frenzy of commit···multicore box, and having a <a href="http://blog.docker.io/2013/10/docker-0-6-5-links-container-naming-advanced-port-redirects-host-integration/">linked-external bandwidth. Stay tuned!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS and XAPI project update at XenSummit</title><link href="https://anil.recoil.org/news/cf9fcf6b-de5d-4a23-a00d-cceadea5b668-1" rel="alternate"></link><published>2013-11-13T00:00:00Z</published><updated>2013-11-13T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/cf9fcf6b-de5d-4a23-a00d-cceadea5b668-1</id><summary type="html"><p>MirageOS and XAPI project update at XenSummit</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Notes from PL and OS 2013 workshop</title><link href="https://anil.recoil.org/notes/liveblog-plos-2013" rel="alternate"></link><published>2013-11-03T00:00:00Z</published><updated>2013-11-03T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/liveblog-plos-2013</id><summary type="html"><p>I co-chaired the Programming Languages and Operating Systems workshop at SOSP 2013, and made livenotes about the (many) papers presented there.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels: Rise of the Virtual Library Operating System</title><link href="https://anil.recoil.org/news/rise-of-libos-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/rise-of-libos-1</id><summary type="html"><p>Article on the Communications of the ACM on unikernels is published</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Trevi: watering down storage hotspots with cool fountain codes</title><link href="https://anil.recoil.org/news/2013-hotnets-trevi-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2013-hotnets-trevi-1</id><summary type="html"><p>Paper on fountain coding for datacentre networking at HotNets 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-hotnets-trevi.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>First edition of Real World OCaml published</title><link href="https://anil.recoil.org/news/rwo-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/rwo-1</id><summary type="html"><p>The 1st Edition of Real World OCaml by O'Reilly associates has been released! There have been flurry of signing events, including an upcoming one at OSCON in Austin.</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Commercial users of functional programming workshop report</title><link href="https://anil.recoil.org/news/2012-cufp-scribe-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-cufp-scribe-1</id><summary type="html"><p>Published the scribe's report for CUFP 2012</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A 21st Century IDE</title><link href="https://mort.io/blog/21st-century-ide/" rel="alternate"></link><published>2013-10-13T01:00:00Z</published><updated>2013-10-13T01:00:00Z</updated><author><name>Unknown</name></author><id>https://mort.io/blog/21st-century-ide/</id><summary type="html"><p>I finally decided to sit down and get the shiny new <a href="http://kiwi.iuwt.fr/~asmanur/blog/merlin/">merlin</a> mode for OCaml···<pre class="language-lisp z-code"><code class="language-lisp"><span class="z-source z-lisp"><span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-support z-function z-lisp">push</span>'<span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-string z-quoted z-double z-lisp"><span class="z-punctuation z-definition z-string z-begin z-lisp">&quot;</span><span class="z-constant z-character z-escape z-lisp">\\</span>.ml[iylp]?<span class="z-punctuation z-definition z-string z-end z-lisp">&quot;</span></span> . tuareg<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span> auto<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>alist<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span></span><span class="z-source z-lisp"><span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-support z-function z-lisp">push</span> '<span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-string z-quoted z-double z-lisp"><span class="z-punctuation z-definition z-string z-begin z-lisp">&quot;</span><span class="z-constant z-character z-escape z-lisp">\\</span>.fs[ix]?<span class="z-punctuation z-definition z-string z-end z-lisp">&quot;</span></span> . tuareg<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span> auto<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>alist<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span>-<p>And that’s it!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Notes on the first Human Data Interaction workshop</title><link href="https://anil.recoil.org/notes/hdi-workshop-2013-liveblog" rel="alternate"></link><published>2013-10-02T01:00:00Z</published><updated>2013-10-02T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/hdi-workshop-2013-liveblog</id><summary type="html"><p>We held the first <a href="https://hdi-network.org">Human Data Interaction</a> workshop over in Cambridge, with lots of discussion about social networks and the state of play with decentralising them.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml 2013 workshop liveblog</title><link href="https://anil.recoil.org/notes/ocaml-2013-liveblog" rel="alternate"></link><published>2013-09-24T01:00:00Z</published><updated>2013-09-24T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ocaml-2013-liveblog</id><summary type="html"><p>I attended the OCaml 2013 workshop and took live notes of the event. There was a lot going on here, which you can learn more about in the &quot;<a href="https://anil.recoil.org/notes/the-year-in-ocamllabs">Reviewing the first year of OCaml Labs in 2013</a>&quot; roundup as well that I published later in the year.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Liveblogging CUFP 2013</title><link href="https://anil.recoil.org/notes/cufp-2013-liveblog" rel="alternate"></link><published>2013-09-22T01:00:00Z</published><updated>2013-09-22T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/cufp-2013-liveblog</id><summary type="html"><p>The <a href="https://cufp.org">Commercial Uses of Functional Programming</a> workshop is one of the best industry/academia crossover workshops to attend, and these are my livenotes from the 2013 edition.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OPAM 1.1 beta available, with pretty colours</title><link href="https://anil.recoil.org/notes/opam-1-1-beta" rel="alternate"></link><published>2013-09-20T01:00:00Z</published><updated>2013-09-20T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/opam-1-1-beta</id><summary type="html"><p><a class="contact" href="https://github.com/samoht">Thomas Gazagnaire</a> just announced the availability of the···-</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The OCaml Platform v0.1</title><link href="https://anil.recoil.org/news/2013-oud-platform-1" rel="alternate"></link><published>2013-09-01T01:00:00Z</published><updated>2013-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2013-oud-platform-1</id><summary type="html"><p>Paper on the OCaml Platform at the OCaml Workshop 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-oud-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ocamlot: Online OCaml Testing</title><link href="https://anil.recoil.org/news/2013-ocamlot-1" rel="alternate"></link><published>2013-09-01T01:00:00Z</published><updated>2013-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2013-ocamlot-1</id><summary type="html"><p>Presented an OCaml ecosystem testing system</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-ocamlot.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Lost in the Edge: Finding Your Way with DNSSEC Signposts</title><link href="https://anil.recoil.org/news/2013-foci-signposts-1" rel="alternate"></link><published>2013-08-01T01:00:00Z</published><updated>2013-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2013-foci-signposts-1</id><summary type="html"><p>Paper on DNSSEC-based Signpost servers for better p2p communications at USENIX FOCI</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-foci-signposts.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mirage Developer Preview 1 screencast</title><link href="https://anil.recoil.org/news/762795c5-9f3b-499b-a054-b2af37d1ddd2-1" rel="alternate"></link><published>2013-07-26T01:00:00Z</published><updated>2013-07-26T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/762795c5-9f3b-499b-a054-b2af37d1ddd2-1</id><summary type="html"><p>Mirage Developer Preview 1 screencast</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Grepping the source of every OCaml package in OPAM</title><link href="https://anil.recoil.org/notes/grepping-every-known-ocaml-package-source" rel="alternate"></link><published>2013-04-08T01:00:00Z</published><updated>2013-04-08T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/grepping-every-known-ocaml-package-source</id><summary type="html"><p>A regular question that comes up from OCaml developers is how to usesimply run <code>grep</code> over every source archive in OPAM? So that’s the topic···-</code></pre></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels: library operating systems for the cloud</title><link href="https://anil.recoil.org/news/2013-asplos-mirage-1" rel="alternate"></link><published>2013-03-01T00:00:00Z</published><updated>2013-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2013-asplos-mirage-1</id><summary type="html"><p>The first paper on unikernels is pubished at ASPLOS 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-asplos-mirage.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Perceived risks of personal data sharing</title><link href="https://anil.recoil.org/news/de13-dataware-1" rel="alternate"></link><published>2013-02-01T00:00:00Z</published><updated>2013-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/de13-dataware-1</id><summary type="html"><p>Paper on dataware computing in the digital economy</p>···&nbsp; <a href="https://anil.recoil.org/papers/de13-dataware.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Concurrent revisions for OCaml</title><link href="https://anil.recoil.org/ideas/concurrent-revisions" rel="alternate"></link><published>2013-01-01T00:00:00Z</published><updated>2013-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/concurrent-revisions</id><summary type="html"><h1>Concurrent revisions for OCaml</h1><p>This is an idea proposed in 2013 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Dimitar Popov</a>.</p>···<p>The dissertation <a href="https://github.com/dpp23/ocaml_revisions/">PDF is available</a>publically along with the <a href="https://github.com/dpp23/ocaml_revisions/">source code to the prototype-and chat server to demonstrate the use of concurrent revisions.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Evolving TCP: how hard can it be?</title><link href="https://anil.recoil.org/news/2012-conext-pvtcp-1" rel="alternate"></link><published>2012-12-01T00:00:00Z</published><updated>2012-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-conext-pvtcp-1</id><summary type="html"><p>Paper on extending TCP in a backwards compatible way at CoNeXT 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-conext-pvtcp.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Announcing OCaml Labs</title><link href="https://anil.recoil.org/notes/announcing-ocaml-labs" rel="alternate"></link><published>2012-10-19T01:00:00Z</published><updated>2012-10-19T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/announcing-ocaml-labs</id><summary type="html"><p>I’m very excited to announce <a href="https://anil.recoil.org/projects/ocamllabs">OCaml Labs</a>, the latest project···applying! There’s some more information available on the <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/collaboration.html">OCaml Labs-about options.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Breaking up is easy (with OPAM)</title><link href="https://anil.recoil.org/notes/breaking-up-mirageos" rel="alternate"></link><published>2012-10-17T01:00:00Z</published><updated>2012-10-17T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/breaking-up-mirageos</id><summary type="html"><p>Once the main advantages of having hypervisors is that you can have strongly isolated services within a single machine. But it's really hard to actually build these specialised services; that is, until MirageOS came along. This post discusses how to build so-called &quot;stub domains&quot; for Xen using MirageOS.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OUD 2012: Towards an OCaml Platform and Introducing OCaml Labs</title><link href="https://anil.recoil.org/news/dd8b1f58-c43c-4422-9963-d3a980529e57-1" rel="alternate"></link><published>2012-09-17T01:00:00Z</published><updated>2012-09-17T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/dd8b1f58-c43c-4422-9963-d3a980529e57-1</id><summary type="html"><p>Recording of the OCaml Labs announcement</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building a Xenstore stub domain with MirageOS</title><link href="https://mirage.io/blog/xenstore-stub-domain" rel="alternate"></link><published>2012-09-12T01:00:00Z</published><updated>2012-09-12T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/xenstore-stub-domain</id><summary type="html"></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Signposts: end-to-end networking in a world of middleboxes</title><link href="https://anil.recoil.org/news/2012-sigcomm-signposts-1" rel="alternate"></link><published>2012-09-01T01:00:00Z</published><updated>2012-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-sigcomm-signposts-1</id><summary type="html"><p>Demoed the Signposts DNSSEC system at SIGCOMM</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-sigcomm-signposts.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming the Xen cloud using OCaml</title><link href="https://anil.recoil.org/news/2012-oud-xen-1" rel="alternate"></link><published>2012-09-01T01:00:00Z</published><updated>2012-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-oud-xen-1</id><summary type="html"><p>Paper on programming the Xen cloud using OCaml at the OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-oud-xen.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Exploring Compartmentalisation Hypotheses with SOAAP</title><link href="https://anil.recoil.org/news/2012-ahans-soapp-1" rel="alternate"></link><published>2012-09-01T01:00:00Z</published><updated>2012-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-ahans-soapp-1</id><summary type="html"><p>Paper on control flow analysis to break up applications into compartments</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-ahans-soapp.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cost, Performance & Flexibility in OpenFlow: Pick three</title><link href="https://anil.recoil.org/news/2012-iccsdn-mirageflow-1" rel="alternate"></link><published>2012-06-01T01:00:00Z</published><updated>2012-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-iccsdn-mirageflow-1</id><summary type="html"><p>Paper on using MirageOS for better SDN infrastructure with OpenFlow</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-iccsdn-mirageflow.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Confidential carbon commuting: exploring a privacy-sensitive architecture for incentivising 'greener' commuting</title><link href="https://anil.recoil.org/news/2012-mpm-caware-1" rel="alternate"></link><published>2012-04-01T01:00:00Z</published><updated>2012-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-mpm-caware-1</id><summary type="html"><p>Paper on our use of data lockers within Cambridge to incentivise more green commuting patterns</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-mpm-caware.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The case for reconfigurable I/O channels</title><link href="https://anil.recoil.org/news/2012-resolve-fable-1" rel="alternate"></link><published>2012-03-01T00:00:00Z</published><updated>2012-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2012-resolve-fable-1</id><summary type="html"><p>Paper on a new design for reconfigurable IO that copes with heterogenous software/hardware</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-resolve-fable.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Dreaming of an ARM OCaml</title><link href="https://anil.recoil.org/notes/dreamplug-debian-and-ocaml" rel="alternate"></link><published>2012-02-25T00:00:00Z</published><updated>2012-02-25T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/dreamplug-debian-and-ocaml</id><summary type="html"><p>I’ve been meaning to play with <a href="http://www.plugcomputer.org/">Pluglow-power embedded system around the house. I recently bought a <a href="http://soekris.com/products/net6501.html">Soekris···-do get in touch with me...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Labs</title><link href="https://anil.recoil.org/projects/ocamllabs" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/ocamllabs</id><summary type="html"><div><p><p>I founded a research group called OCaml Labs at the University of Cambridge, with the goal of pushing OCaml and functional programming forward as a platform, making it a more effective tool for all users (including large-scale industrial deployments), while at the same time growing the appeal of the language, broadening its applicability and popularity. Over a decade, we retrofitted multicore parallelism into the mainline OCaml manager, wrote a popular book on the language, and helped start and grow an OCaml package and tooling ecosystem that is thriving today.</p>···<p>All of those groups merged into one unified Tarides in 2022 (<a href="https://tarides.com/blog/2022-01-27-ocaml-labs-joins-tarides/">OCLC</a> and <a href="https://segfault.systems">Segfault</a>), making it easier to manage a growing community of maintainers. There's really exciting work happening there to continue the upstreaming of themulticore OCaml features into mainline OCaml, making unikernels and MirageOS ever more practical and robust to deploy, and shipping end-to-end Windows support in the OCaml toolchain. You can read about all this and more on the <a href="https://tarides.com/blog/">Tarides blog</a>, which is regularly updated with news on their projects.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Macro- and Micro-benchmarking in OCaml</title><link href="https://anil.recoil.org/ideas/macro-micro-benchmarking" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/macro-micro-benchmarking</id><summary type="html"><h1>Macro- and Micro-benchmarking in OCaml</h1><p>This is an idea proposed in 2012 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Sebastian Funk</a>.</p><p>Benchmarking involves the measurement of statistics such as run-time, memory allocations, garbage collections in a running program in order to analyze its performance and behaviour. To scientifically evaluate and understand the performance of a program, there is often a cycle of:</p>···<p><a class="contact" href="https://anil.recoil.org/">Sebastian Funk</a> went on to work at Jane Street on OCaml after his project, and one-2019 talk on his subsequent work can be seen below.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CUFP 2011 Workshop Report</title><link href="https://anil.recoil.org/news/2011-cufp-scribe-1" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2011-cufp-scribe-1</id><summary type="html"><p>Published the scribe's report for CUFP 2011</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Analysis of the Raft Consensus Protocol</title><link href="https://anil.recoil.org/ideas/raft-consensus" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/raft-consensus</id><summary type="html"><h1>Analysis of the Raft Consensus Protocol</h1><p>This is an idea proposed in 2012 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Heidi Howard</a>.</p>···<p>The dissertation is available as <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-857.html">UCAM-CL-TR-857</a> in the Cambridge Computer Laboratory technical report series. <a class="contact" href="https://anil.recoil.org/">Heidi Howard</a> continued work on Raft subsequent to submitting this project and published it later in the year as <a href="https://anil.recoil.org/papers/2014-sigops-raft">Raft Refloated: Do We Have Consensus?</a>.</p><p>You can watch <a class="contact" href="https://anil.recoil.org/">Heidi Howard</a> talk about her work in a Computerphile video from 2016:</p>-<p><a class="contact" href="https://anil.recoil.org/">Heidi Howard</a> also continued to work on Raft and distributed consensus later:</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Meeting 2011 - MirageOS</title><link href="https://anil.recoil.org/news/7d949597-b864-4ada-ab1a-81ff8c0463e2-1" rel="alternate"></link><published>2011-10-19T01:00:00Z</published><updated>2011-10-19T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/7d949597-b864-4ada-ab1a-81ff8c0463e2-1</id><summary type="html"><p>At the OCaml Meeting 2011 speaking about MirageOS</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>An outing to CUFP 2011 for Mirage</title><link href="https://anil.recoil.org/notes/cufp-2011-mirage" rel="alternate"></link><published>2011-09-29T01:00:00Z</published><updated>2011-09-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/cufp-2011-mirage</id><summary type="html"><p>We signed up to do a MirageOS tutorial at ICFP, which is a bit daunting: we had to get all the embedded ARM hardware and laptop support in shape, as well as make it work for a bunch of discerning hackers.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Extending 64-bit MIPS support for LLVM</title><link href="https://anil.recoil.org/ideas/mips-llvm" rel="alternate"></link><published>2011-08-01T01:00:00Z</published><updated>2011-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/mips-llvm</id><summary type="html"><h1>Extending 64-bit MIPS support for LLVM</h1><p>This is an idea proposed in 2011 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/wmorland">William Morland</a>. It was co-supervised with <a class="contact" href="http://www.watson.org/~robert/">Robert M Watson</a>.</p><p>In the summer of 2011, we hosted <a class="contact" href="https://github.com/wmorland">William Morland</a> to do an internship in the Computer Lab just as the<a href="https://www.cl.cam.ac.uk/research/security/ctsrd/">CTSRD/CHERI</a> project kicked off.···LLVM/MIPS backend, filling in missing instructions and finding bugs via exercising the test suite.His LLVM repository is up at <a href="https://github.com/wmorland/LLVM-Mips">GitHub</a>, along withthe discussions from back in 2011 on the <a href="https://discourse.llvm.org/t/mips-target-instruction-set/20373">llvm-dev</a> lists.-There's also a nice poster of this work from the <a href="https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/20111108-ctsrd-pimeeting-poster.pdf">2011 CTSRD project meeting</a>!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Control flow analysis for privilege separation</title><link href="https://anil.recoil.org/ideas/soapp-privgrind" rel="alternate"></link><published>2011-08-01T01:00:00Z</published><updated>2011-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/soapp-privgrind</id><summary type="html"><h1>Control flow analysis for privilege separation</h1><p>This is an idea proposed in 2011 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://uk.linkedin.com/in/hardingcj">Chris Harding</a> and <a class="contact" href="https://research.google/people/ross-mcilroy/">Ross McIlroy</a>. It was co-supervised with <a class="contact" href="http://www.watson.org/~robert/">Robert M Watson</a>.</p><p>In the summer of 2011, we hosted <a class="contact" href="https://uk.linkedin.com/in/hardingcj">Chris Harding</a> and <a class="contact" href="https://research.google/people/ross-mcilroy/">Ross McIlroy</a> to do an···(we all got busy with other projects). There is a workshop paper on <a href="https://anil.recoil.org/papers/2012-ahans-soapp">Exploring Compartmentalisation Hypotheses with SOAAP</a>-more since.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Dynamics for ML using Meta-Programming</title><link href="https://anil.recoil.org/news/2011-dynamics-ml-1" rel="alternate"></link><published>2011-07-01T01:00:00Z</published><updated>2011-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2011-dynamics-ml-1</id><summary type="html"><p>Published dyntype at the Workshop on Generative Technologies</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-dynamics-ml.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Dynamics for ML using Meta-Programming</title><link href="https://anil.recoil.org/news/2010-dyntype-wgt-1" rel="alternate"></link><published>2011-07-01T01:00:00Z</published><updated>2011-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2010-dyntype-wgt-1</id><summary type="html"><p>Paper on statically typed value persistence for OCaml in ENTCS 2011</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-dyntype-wgt.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Delimited continuations vs Lwt for threads</title><link href="https://mirage.io/blog/delimcc-vs-lwt" rel="alternate"></link><published>2011-06-18T01:00:00Z</published><updated>2011-06-18T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/delimited-cont-vs-lwt</id><summary type="html"></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>DataCaml: distributed dataflow programming in OCaml</title><link href="https://anil.recoil.org/notes/datacaml-with-ciel" rel="alternate"></link><published>2011-06-11T01:00:00Z</published><updated>2011-06-11T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/datacaml-with-ciel</id><summary type="html"><p>Distributed programming frameworks like<a href="http://research.microsoft.com/en-us/projects/dryad/">Dryad</a> are popular···<a href="http://www.cl.cam.ac.uk/~ms705">Malte</a> for answering my incessant CIEL-progress and a research prototype, and feedback is most welcome.</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reconfigurable Data Processing for Clouds</title><link href="https://anil.recoil.org/news/2011-fccm-cloudfpga-1" rel="alternate"></link><published>2011-05-01T01:00:00Z</published><updated>2011-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2011-fccm-cloudfpga-1</id><summary type="html"><p>Paper on what a Xen+FPGA cloud would look like at FCCM</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-fccm-cloudfpga.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional programming gone wild in the SRG</title><link href="https://anil.recoil.org/notes/srg-fp" rel="alternate"></link><published>2011-04-18T01:00:00Z</published><updated>2011-04-18T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/srg-fp</id><summary type="html"><p>We've been doing loads of OCaml programming in the Systems Research Group, and this blog post lays out some of the things going on. It ranges from OCaml hacking, over to the CIEL distributed execution engine, and even some Haskell hacking ongoing for distributed execution.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Camel Spotting in Paris</title><link href="https://anil.recoil.org/notes/ocaml-users-group" rel="alternate"></link><published>2011-04-15T01:00:00Z</published><updated>2011-04-15T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/ocaml-users-group</id><summary type="html"><p>I'm at the <a href="https://forge.ocamlcore.org/plugins/mediawiki/wiki/ocaml-meeting/index.php/OCamlMeeting2011">2011 OCaml Users Group</a> in Paris, reporting on some splendid talks this year. It looked like around 60-70 people in the room, and I had the pleasure of meeting users all the way from <a href="http://ru.linkedin.com/pub/dmitry-bely/4/955/717">Russia</a> to <a href="http://ashishagarwal.org/about/">New York</a> as well as all the Europeans!</p><p>First up was <a href="http://www.lsv.ens-cachan.fr/~chambart/">Pierre Chambart</a> talking about the <a href="http://ocsigen.org/js_of_ocaml/">js_of_ocaml</a> compiler. It compiles OCaml bytecode directly to Javascript, with few external dependencies. Since the bytecode format changes very rarely, it is simpler to maintain than alternatives (such as Jake Donham’s <a href="https://github.com/jaked/ocamljs">ocamljs</a>) that require patching the compiler tool-chain. Javascript objects are mapped to dynamic OCaml objects via a light-weight <code>##</code> operator, so you can simply write code like:</p>···<p><figure class="image-center"><img alt="" class="content-image" src="https://anil.recoil.org/images/sf-ocaml.webp" title="" /><figcaption></figcaption></figure><p>Of course, not all of the OCaml community action is in France. The ever-social <a href="http://www.twitter.com/jakedonham">Jake Donham</a> organised the First Ever San Francisco User Group that I attended when I was over there a few weeks ago. Ok, admittedly it was mainly French people there too, but it was excellent to meet up with <a href="http://www.linkedin.com/pub/mika-illouz/0/a02/7b4">Mika</a>, <a href="http://martin.jambon.free.fr/">Martin</a>, <a href="http://www.linkedin.com/pub/julien-verlaguet/20/10a/b57">Julien</a>, <a href="http://fr.linkedin.com/in/henribinsztok">Henri</a> and of course Jake when over there.</p>-<p>We should definitely have more of these fun local meetups, and a number of other OCaml hackers I mentioned it to want to attend next time in the Bay Area, if only to cry into their drinks about the state of multi-core... <em>just kidding</em>, <a href="http://www.ocamlpro.com">OCamlPro</a> is hard at work fixing that after all :-)</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CIEL: A universal execution engine for distributed data-flow computing</title><link href="https://anil.recoil.org/news/2011-nsdi-ciel-1" rel="alternate"></link><published>2011-03-01T00:00:00Z</published><updated>2011-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2011-nsdi-ciel-1</id><summary type="html"><p>Paper on CIEL, a distributed dataflow engine, at USENIX NSDI 2011</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-nsdi-ciel.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unclouded vision</title><link href="https://anil.recoil.org/news/2011-icdcn-droplets-1" rel="alternate"></link><published>2011-01-01T00:00:00Z</published><updated>2011-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2011-icdcn-droplets-1</id><summary type="html"><p>Paper on a vision for a semi-federated cloud for personal data at ICDCN</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-icdcn-droplets.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Simulating XMPP Group Communication</title><link href="https://anil.recoil.org/ideas/xmpp-group-comms" rel="alternate"></link><published>2011-01-01T00:00:00Z</published><updated>2011-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/xmpp-group-comms</id><summary type="html"><h1>Simulating XMPP Group Communication</h1><p>This is an idea proposed in 2011 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://farhanmannan.com">Farhān Mannān</a>.</p><p>The problem of getting a digital message from one place to another has a staggering range of possible scenarios, constraints and applications. Humans and devices are in constant dialogue, with various constraints and contracts being invisibly maintained. Even the most flippant instant message sets layers of protocols in motion, all straining to resolve identities and propagate information transparently across disparate physical components that must present a logically unified front to users. Subtleties like authentication, encryption and anonymity abound.</p><p>This project aims to build an OCaml-based simulator (using the <code>ocamlgraph</code> library) to build an XMPP protocol simulator that can model the networks, agents and protocols involved in XMPP-based group communication. The project is twofold and modular: the core is a simulator which is used to investigate the properties of gossip protocols acting on different graph topologies. The simulator can be parameterised on an RPC implementation so that rather than using simulated graphs, it can monitor the performance of the algorithms on real networks as well. An attempted extension is implementation of a functional OCaml RPC abstraction over XMPP which would be compatible with the simulator and be usable with <a href="https://mirage.io">MirageOS</a>.</p>···<p>The source code to the <a href="https://github.com/f6m6/gossip">OCaml XMPP simulator</a>-should be in the Cambridge Computer Lab archives somewhere.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional ABNF parser generators</title><link href="https://anil.recoil.org/ideas/functional-imap" rel="alternate"></link><published>2011-01-01T00:00:00Z</published><updated>2011-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/functional-imap</id><summary type="html"><h1>Functional ABNF parser generators</h1><p>This is an idea proposed in 2011 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/ns476">Nicholas Skehin</a>.</p>···-from the author, but not published.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building the Xen toolstack using OCaml</title><link href="https://anil.recoil.org/news/43ab3ae0-9ffc-474f-aa02-3cc1139f54d1-1" rel="alternate"></link><published>2010-11-05T00:00:00Z</published><updated>2010-11-05T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/43ab3ae0-9ffc-474f-aa02-3cc1139f54d1-1</id><summary type="html"><p>Talk on building the Xen toolstack using OCaml</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mirage: A New Multi-Scale Operating System for Clouds and Crowds (2014)</title><link href="https://anil.recoil.org/news/be2f049b-174a-4e5b-b30e-0319793487c7-1" rel="alternate"></link><published>2010-10-25T01:00:00Z</published><updated>2010-10-25T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/be2f049b-174a-4e5b-b30e-0319793487c7-1</id><summary type="html"><p>At LinkedIn giving tech talk about Mirage</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Self-hosting MirageOS website</title><link href="https://anil.recoil.org/notes/mirage-self-hosting" rel="alternate"></link><published>2010-10-11T01:00:00Z</published><updated>2010-10-11T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/mirage-self-hosting</id><summary type="html"><p>I managed to get early <a href="https://mirage.io">MirageOS</a> suitably feature-complete enough that we could run the Mirage website using Mirage. This was all very satisfying after hacking on the <a href="https://github.com/mirage/mirage-tcpip">TCP/IP</a> stack for ages.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The personal container, or your life in bits</title><link href="https://anil.recoil.org/news/de10-perscon-1" rel="alternate"></link><published>2010-10-01T01:00:00Z</published><updated>2010-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/de10-perscon-1</id><summary type="html"><p>Paper on personal containers for data management at the UK Digital Economy meeting</p>···&nbsp; <a href="https://anil.recoil.org/papers/de10-perscon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using functional programming within an industrial product group: perspectives and perceptions</title><link href="https://anil.recoil.org/news/2010-icfp-xen-1" rel="alternate"></link><published>2010-09-01T01:00:00Z</published><updated>2010-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2010-icfp-xen-1</id><summary type="html"><p>Paper on our experiences with writing the Xen control stack in OCaml at ICFP 2010</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-icfp-xen.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Turning Down the LAMP: Software Specialisation for the Cloud</title><link href="https://anil.recoil.org/news/4957325f-d7f5-4a29-95b6-a1e1f61ea5cf-1" rel="alternate"></link><published>2010-06-22T01:00:00Z</published><updated>2010-06-22T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/4957325f-d7f5-4a29-95b6-a1e1f61ea5cf-1</id><summary type="html"><p>At HotCloud for the first talk about MirageOS</p>-<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Turning Down the LAMP: Software Specialisation for the Cloud</title><link href="https://anil.recoil.org/news/2010-hotcloud-lamp-1" rel="alternate"></link><published>2010-06-01T01:00:00Z</published><updated>2010-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2010-hotcloud-lamp-1</id><summary type="html"><p>Workshop paper on the early MirageOS architecture and evaluation at HotCloud 2010</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-hotcloud-lamp.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Creating high-performance, statically type-safe network applications</title><link href="https://anil.recoil.org/news/anil-phd-thesis-2" rel="alternate"></link><published>2010-05-01T01:00:00Z</published><updated>2010-05-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/anil-phd-thesis-2</id><summary type="html"><p>My PhD thesis is now also published as a print book</p>···&nbsp; <a href="https://anil.recoil.org/papers/anil-phd-thesis.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Yurts for Digital Nomads</title><link href="https://anil.recoil.org/notes/yurts-for-digital-nomads" rel="alternate"></link><published>2010-04-29T01:00:00Z</published><updated>2010-04-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/yurts-for-digital-nomads</id><summary type="html"><p>The App Engine data collector for Personal Containers is coming on nicely, and is on track for an alpha preview release <a href="http://github.com/avsm/perscon/blob/master/README.md">fairly soon</a>. Working with AppEngine has been interesting; it’s got excellent availability and you can’t beat the price (free), but coding robust Python that doesn’t trip over the tight resource limits for individual requests, asynchronous tasks and queries is tricky. While it is good for small records such as my <a href="http://github.com/avsm/perscon/tree/master/plugins/iPhone/">iPhone</a> or Find My iPhone <a href="http://github.com/avsm/perscon/blob/master/appengine/perscon/drivers/fmi.py">GPS traces</a> traces, it doesn’t work so well with my gigabytes of photographs or decades of e-mail.</p><p>This confirmed our earlier intuition that there is no one perfect solution for personal data handling; instead, we need to <em>embrace diversity</em> and construct an infrastructure that can cope with change over the coming decades. Mobile programming has changed beyond recognition in just a few years, and cloud providers are specialising in different ways (e.g. <a href="http://www.picloud.com/">PiCloud</a> for simple compute, or <a href="http://aws.amazon.com">EC2</a> for fancy services like elastic <a href="http://aws.amazon.com/elasticloadbalancing/">load balancing</a>).</p><p>So to recognise this, we are building components that all interoperate with your personal data, keep it secure, and ensure it persists for more than a few years. <a class="contact" href="https://cs.brown.edu/people/malte/">Malte Schwarzkopf</a> came up with the term &quot;digital <a href="http://en.wikipedia.org/wiki/Yurt">yurts</a>&quot;, and it's stuck. We’ve written a <a href="http://perscon.net/papers/digital-yurts-draft1.pdf">draft paper</a> about it, and would love to hear your comments and feedback on the approach.</p><p><img alt="" class="content-image" src="https://anil.recoil.org/images/nomads-diagram.webp" title="" />···<p>If you’re interested, join our <a href="http://perscon.net/contact.html">group</a>or contact <a class="contact" href="https://anil.recoil.org">Anil Madhavapeddy</a> directly. At this stage, you-over the next few months...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Pulling together a user interface</title><link href="https://anil.recoil.org/notes/uiprototype" rel="alternate"></link><published>2010-04-15T01:00:00Z</published><updated>2010-04-15T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/uiprototype</id><summary type="html"><p>We’ve been <a href="http://github.com/avsm/perscon">hacking</a> away on fleshing out the <a href="http://code.google.com/appengine">App Engine</a> node for personal containers. We’re building this node first because, crucially, deploying an App Engine VM is free to anyone with a Google account. The service itself is limited since you can only respond to HTTP or XMPP requests and do HTTP fetches, and so its primary use is as an always-on data collection service with a webmail-style UI written using <a href="http://www.extjs.com/">extjs</a>.</p><p>Personal containers gather data from a wide variety of sources, and normalise them into a format which understands people (address book entries, with a set of services such as e-mail, phone, IM and online IDs), places (GPS, WOEID), media (photos, movies) and messages (Tweets, emails, Facebook messages). I’ll post more about the data model behind personal containers in a follow-up as the format settles.</p><p><figure class="image-center"><img alt="" class="content-image" src="https://anil.recoil.org/images/perscon-extjs.webp" title="" /><figcaption></figcaption></figure>···<li><a href="http://github.com/avsm/perscon/tree/master/plugins/MacOS-SyncServices/">SyncServices</a> hooks into the MacOS X <a href="http://developer.apple.com/macosx/syncservices.html">sync framework</a> and initially subscribes to Address Book updates. This seems to be the first open-source sync alternative to the expensive Mobile Me, as far as I can tell. I’m planning to expand this to also subscribe to the full set of sync information (e.g. calendars).</li><p>I'm switching tacks briefly; we received an <a href="http://aws.amazon.com/education/aws-in-education-research-grants/">Amazon Research Grant</a> recently and I’m building a node that runs as a Linux server to act as a longer-term archival and search server. This is being written in OCaml and uses <a href="http://1978th.net/tokyocabinet/">Tokyo Cabinet</a> (with Jake Donham’s excellent <a href="http://github.com/jaked/otoky">bindings</a>) and so should be speedy and a useful alternative implementation of the HTTP REST interface. The plan is to automatically synchronize meta-data across all the nodes of a personal container, but store large and historical data away from expensive cloud storage such as App Engine.</p>-<p>There are lots more plugins in development, such as <a href="http://foursquare.com">Foursquare</a> and <a href="http://gowalla.com">Gowalla</a> OAuth collectors, an <a href="http://github.com/avsm/perscon/tree/master/android">Android</a> mobile application to upload location and contacts information, and Google GData synchronization. If you’re interested in one of these or something else, please do <a href="http://perscon.net/contact.html">get in touch</a> or just fork the <a href="http://github.com/avsm/perscon">project</a> and start hacking!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Multiscale not multicore: efficient heterogeneous cloud computing</title><link href="https://anil.recoil.org/news/2010-bcs-visions-1" rel="alternate"></link><published>2010-04-01T01:00:00Z</published><updated>2010-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2010-bcs-visions-1</id><summary type="html"><p>Paper on our vision for multiscale programming at the BCS Visions 2010 conference</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-bcs-visions.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Opening a website</title><link href="https://anil.recoil.org/notes/opening-a-website" rel="alternate"></link><published>2010-03-29T01:00:00Z</published><updated>2010-03-29T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/opening-a-website</id><summary type="html"><p>We've been working away at building a new type of database to help individualsprototypes run freely on <a href="https://web.archive.org/web/20110509135538/http://code.google.com/appengine">Google App Engine</a> to gather your data···with the <a href="https://web.archive.org/web/20110509135538/http://perscon.net/install.html">installation</a> instructions to clone your own version. After that, readup on the <a href="https://web.archive.org/web/20110509135538/http://perscon.net/design.html">design</a> of the system (which is still changing as we research new-data source, just clone the <a href="https://github.com/avsm/perscon">code</a> and send us back fixes!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Privacy Butler: A Personal Privacy Rights Manager for Online Presence</title><link href="https://anil.recoil.org/news/2010-smarte-privacybutler-1" rel="alternate"></link><published>2010-03-01T00:00:00Z</published><updated>2010-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2010-smarte-privacybutler-1</id><summary type="html"><p>Paper on privacy butler services for more private data management</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-smarte-privacybutler.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Creating high-performance, statically type-safe network applications</title><link href="https://anil.recoil.org/news/anil-phd-thesis-1" rel="alternate"></link><published>2010-03-01T00:00:00Z</published><updated>2010-03-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/anil-phd-thesis-1</id><summary type="html"><p>PhD thesis now available as a technical report</p>···&nbsp; <a href="https://anil.recoil.org/papers/anil-phd-thesis.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels</title><link href="https://anil.recoil.org/projects/unikernels" rel="alternate"></link><published>2010-01-01T00:00:00Z</published><updated>2010-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/unikernels</id><summary type="html"><div><p><p>I proposed the concept of &quot;unikernels&quot; -- single-purpose appliances that are compile-time specialised into standalone bootable kernels, and sealed against modification when deployed to a cloud platform. In return they offer significant reduction in image sizes, improved efficiency and security, and reduce operational costs. I also co-founded the MirageOS project which is one of the first complete unikernel frameworks, and also integrated them to create the Docker for Desktop apps that are used by hundreds of millions of users daily.</p><p>While working on <a href="https://anil.recoil.org/projects/perscon">Personal Containers</a> in late 2008, I had a need to run lots of distributed edge nodes holding personal data. The state of computer security is generally a disaster when it comes to leaving software unupgraded for even a few months, so building robust infrastructure that normal people could use was proving quite difficult. Meanwhile, my PhD research in building <a href="https://anil.recoil.org/projects/melange">Functional Internet Services</a> had constructed really viable prototypes of network protocols written in pure OCaml, and I'd previously used OCaml industrially in the <a href="https://anil.recoil.org/projects/xen">Xen Hypervisor</a> hypervisor to write lots of system management code.</p>···<p>The wider industry also saw a number of interesting spinouts, as many other communities also latched on to the ideas of unikernels and began their own language-specific and domain-specific versions. I joined the advisory boards of IncludeOS (now sadly defunct) and Zededa (now thankfully going from strength to strength in edge computing) to help guide strategy and adoption outside of just MirageOS. Dr Pierre Oliver maintains a great list of <a href="https://github.com/olivierpierre/unikernel-papers">unikernel papers</a> where you can see the diversity and interest in unikernels. One of the most exciting implementations of a C-based unikernel can be found in <a href="https://www.unikraft.org/">Unikraft</a>.</p><p>As for my interest in unikernels moving forward? My heart always remains in finding the intersection of <em>safety</em> and <em>performance</em>, which means I mostly pay attention to language-based approaches. MirageOS continues to thrive (particularly with the effect system being integrated into OCaml in 2022, which will really change the way we develop OCaml code for embedded systems). Since 2020, I've been investigating the application of DIFC to embedded infrastructure, for example via <a href="https://anil.recoil.org/papers/2019-edgesys-snape">Snape: The Dark Art of Handling Heterogeneous Enclaves</a>.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional Reactive Web Applications</title><link href="https://anil.recoil.org/ideas/frp-web-ocaml" rel="alternate"></link><published>2010-01-01T00:00:00Z</published><updated>2010-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/ideas/frp-web-ocaml</id><summary type="html"><h1>Functional Reactive Web Applications</h1><p>This is an idea proposed in 2010 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Henry Hughes</a>.</p>···-The source code is also archived but not publically available.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Combining Static Model Checking with Dynamic Enforcement Using the Statecall Policy Language</title><link href="https://anil.recoil.org/news/2009-icfem-spl-1" rel="alternate"></link><published>2009-11-01T00:00:00Z</published><updated>2009-11-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2009-icfem-spl-1</id><summary type="html"><p>Paper on a DSL for specifying temporal protocol automata at ICFEM 2009</p>···&nbsp; <a href="https://anil.recoil.org/papers/2009-icfem-spl.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Personal Containers</title><link href="https://anil.recoil.org/projects/perscon" rel="alternate"></link><published>2009-01-01T00:00:00Z</published><updated>2009-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/perscon</id><summary type="html"><div><p><p>As cloud computing empowered the creation of vast data silos, I investigated how decentralised technologies might be deployed to allow individuals more vertical control over their own data. Personal containers was the prototype we built to learn how to stem the flow of our information out to the ad-driven social tarpits. We also deployed personal containers in an experimental data locker system at the University of Cambridge in order to incentivise lower-carbon travel schemes.</p>···<p>My work on personal data processing petered out from a research perspective in around 2013 since the underlying infrastructure I had built really started gathering steam with <a href="https://anil.recoil.org/projects/unikernels">Unikernels</a> and <a href="https://anil.recoil.org/projects/ocamllabs">OCaml Labs</a>. We hadn't quite cracked the problem of how to break the cloud hegemony, but (as with XenoServers and Xen), the pieces that succeeded emerged from the research questions we asked.However, I don't consider this project permanently closed by any means -- after all, I've been self hosting my email since 1997! We've been working steadily over the past decade of MirageOS (as of 2021) to build out a really solid, self-hosted protocol stack that will work as a unikernel. I am revisiting the question of decentralisation in the form of physical infrastructure in the <a href="https://anil.recoil.org/projects/osmose">Interspatial OS</a> project, and you can read my early thoughts in <a href="https://anil.recoil.org/papers/2018-hotpost-osmose">An architecture for interspatial communication</a>.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Peeking under the hood of High Availability</title><link href="https://anil.recoil.org/notes/peeking-under-the-hood-of-high-availability" rel="alternate"></link><published>2008-09-17T01:00:00Z</published><updated>2008-09-17T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/peeking-under-the-hood-of-high-availability</id><summary type="html"><p>Well, the big launch of <a href="http://www.xenserver5.com/">XenServer 5</a> has gone smoothly, and with it have arrived a flood of questions about how exactly the new <a href="https://web.archive.org/web/20081121042533/https://xenserver5.com/ha.php">High Availability</a> functionality works. I’ll use this post to explain the overall architecture of HA in XenServer 5, and also how some of the fault detection and failure planning works.</p><p>Fundamentally, HA is about making sure important VMs are always running on a resource pool. There are two aspects to this: reliably <strong>detecting host failure</strong>, and computing a <strong>failure plan</strong> to deal with swift recovery.</p><p>Detecting host failure reliably is difficult since you need to remotely distinguish between a host disappearing for a while versus exploding in a ball of flames. If we mistakenly decide that a master host has broken down and elect a new master in its place, there may be unpredictable results if the original host were to make a comeback! Similarly, if there is a network issue and a resource pool splits into two equal halves, we need to ensure that only one half accesses the shared storage and not both simultaneously.</p>···-<p>So, I hope this short article has given you a taster... just kidding! This post is almost as long as my PhD thesis, but then, HA is a complex topic. Please do feel free to get back to me with comments and feedback about how we can improve it in the future releases, or if you just love it the way it is. Many thanks to <a class="contact" href="https://github.com/djs55">Dave Scott</a>, <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a>, Ewan Mellor and Hugh Warrington for their input to this article.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Shedding light on XenApp on XenServer performance tuning</title><link href="https://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuning" rel="alternate"></link><published>2008-08-04T01:00:00Z</published><updated>2008-08-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuning</id><summary type="html"><p>You won’t be surprised to hear that we spend a lot of time improvinggood benchmark comparisons available (such as the <a href="http://community.citrix.com/x/_4ENAg">Tolly···-<a href="http://xen.org/">xen.org</a>, check out the source, and get coding…</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Installing Ubuntu on XenServer</title><link href="https://anil.recoil.org/notes/installing-ubuntu-on-xenserver" rel="alternate"></link><published>2008-07-02T01:00:00Z</published><updated>2008-07-02T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/installing-ubuntu-on-xenserver</id><summary type="html"><p>I thought I’d kick off my Citrix blog with a question I get pretty often<p>The most common solution people find is to use the &quot;Other Install Media&quot;···-their Linux beards remain long and uncut.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Enhancing web browsing security on public terminals using mobile composition</title><link href="https://anil.recoil.org/news/2008-mobisys-splittrust-1" rel="alternate"></link><published>2008-06-01T01:00:00Z</published><updated>2008-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2008-mobisys-splittrust-1</id><summary type="html"><p>Paper on splitting trust between smartphones and webrowsers at MobiSys 2008</p>···&nbsp; <a href="https://anil.recoil.org/papers/2008-mobisys-splittrust.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Melange: creating a "functional" internet</title><link href="https://anil.recoil.org/news/2007-eurosys-melange-1" rel="alternate"></link><published>2007-06-01T01:00:00Z</published><updated>2007-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2007-eurosys-melange-1</id><summary type="html"><p>Won best student paper for my PhD work on a high-performance functional packet parsing DSL at Eurosys 2007!</p>···&nbsp; <a href="https://anil.recoil.org/papers/2007-eurosys-melange.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Interacting with mobile services: an evaluation of camera-phones and visual tags</title><link href="https://anil.recoil.org/news/2006-puc-tags-1" rel="alternate"></link><published>2007-02-01T00:00:00Z</published><updated>2007-02-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2006-puc-tags-1</id><summary type="html"><p>Journal paper on interacting with mobile services using camera-phones</p>···&nbsp; <a href="https://anil.recoil.org/papers/2006-puc-tags.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Fighting Crimeware: An Architecture for Split-Trust Web Applications</title><link href="https://anil.recoil.org/news/2006-fighting-crimeware-1" rel="alternate"></link><published>2006-04-01T01:00:00Z</published><updated>2006-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2006-fighting-crimeware-1</id><summary type="html"><p>New paper <a href="https://anil.recoil.org/papers/2006-fighting-crimeware">Fighting Crimeware: An Architecture for Split-Trust Web Applications</a> available</p>···&nbsp; <a href="https://anil.recoil.org/papers/2006-fighting-crimeware.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>SPLAT: A Tool for Model-Checking and Dynamically-Enforcing Abstractions</title><link href="https://anil.recoil.org/news/2005-spin-splat-1" rel="alternate"></link><published>2005-08-01T01:00:00Z</published><updated>2005-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-spin-splat-1</id><summary type="html"><p>Workshop paper on temporal automata for protocol specifications at SPIN 2005</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-spin-splat.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ubiquitious Computing needs to catch up with Ubiquitous Media</title><link href="https://anil.recoil.org/news/2005-ubiapp-ubimedia-1" rel="alternate"></link><published>2005-07-01T01:00:00Z</published><updated>2005-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-ubiapp-ubimedia-1</id><summary type="html"><p>Position paper on ubiquitous computing approaches to emerging stream media appliances</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ubiapp-ubimedia.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Audio networking: the forgotten wireless technology</title><link href="https://anil.recoil.org/news/2005-ieee-audio-1" rel="alternate"></link><published>2005-07-01T01:00:00Z</published><updated>2005-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-ieee-audio-1</id><summary type="html"><p>New paper <a href="https://anil.recoil.org/papers/2005-ieee-audio">Audio networking: the forgotten wireless technology</a> available</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ieee-audio.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A Study of Bluetooth Propagation Using Accurate Indoor Location Mapping</title><link href="https://anil.recoil.org/news/2005-ubicomp-bluetooth-1" rel="alternate"></link><published>2005-07-01T01:00:00Z</published><updated>2005-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-ubicomp-bluetooth-1</id><summary type="html"><p>Ubicomp paper on a study of indoor bluetooth propagation using the Active Bat system</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ubicomp-bluetooth.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OpenBSD C2K5 thoughts</title><link href="https://anil.recoil.org/notes/c2k5-thoughts" rel="alternate"></link><published>2005-06-04T01:00:00Z</published><updated>2005-06-04T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/c2k5-thoughts</id><summary type="html"><p>Finally had some time to get back from the OpenBSD hackathon and take···OCaml-based daemons that <a class="contact" href="https://github.com/djs55">Dave Scott</a> and I have been-high-level issues.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>On the challenge of delivering high-performance, dependable, model-checked internet servers</title><link href="https://anil.recoil.org/news/2005-hotdep-spl-1" rel="alternate"></link><published>2005-06-01T01:00:00Z</published><updated>2005-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-hotdep-spl-1</id><summary type="html"><p>Paper on temporal automata for protocol implementations at HotDep 2005</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-hotdep-spl.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using visual tags to bypass Bluetooth device discovery</title><link href="https://anil.recoil.org/news/2005-mc2r-visualtags-1" rel="alternate"></link><published>2005-01-01T00:00:00Z</published><updated>2005-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-mc2r-visualtags-1</id><summary type="html"><p>While designing <a href="https://anil.recoil.org/projects/ubiqinteraction">Spotcodes</a>, we realised that visual···&nbsp; <a href="https://anil.recoil.org/papers/2005-mc2r-visualtags.bib">BIB</a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using smart phones to access site-specific services</title><link href="https://anil.recoil.org/news/2005-ieee-smartphones-1" rel="alternate"></link><published>2005-01-01T00:00:00Z</published><updated>2005-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-ieee-smartphones-1</id><summary type="html"><p>Article on using cameraphones to access site-specific services in IEEE Pervasive Computing</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ieee-smartphones.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The Broadband Phone Network: Experiences with Context-Aware Telephony</title><link href="https://anil.recoil.org/news/2005-bbphone-1" rel="alternate"></link><published>2005-01-01T00:00:00Z</published><updated>2005-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2005-bbphone-1</id><summary type="html"><p>Report on our hacking on the AT&amp;T Broadband Phone</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-bbphone.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using camera-phones to interact with context-aware mobile services</title><link href="https://anil.recoil.org/news/2004-spotcodes-1" rel="alternate"></link><published>2004-12-01T00:00:00Z</published><updated>2004-12-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2004-spotcodes-1</id><summary type="html"><p>A technical report is now available on our SpotCode visual tag system, and includes a user study leadby <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a> which tested its benefits against conventional mobile interfaces.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2004-spotcodes.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Connecting Paper and Online Worlds by Cellphone</title><link href="https://anil.recoil.org/notes/spotcodes-nytimes" rel="alternate"></link><published>2004-10-07T01:00:00Z</published><updated>2004-10-07T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/spotcodes-nytimes</id><summary type="html"><p>In what is definitely our most exciting media coverage yet, <a href="https://anil.recoil.org/projects/ubiqinteraction">Spotcodes</a> are featured in the New York Times!</p><p>When you think of a public information kiosk, your mental picture might include greasy touch screens, broken trackballs and frozen monitors.But researchers at an Intel-financed lab at Cambridge University have developed a way to replace displays like those with something portable, not to mention personal: a cellphone's built-in camera and screen. They and others plan to use commercially available hardware to turn the camera-equipped cellphone into a mouse, remote control, keyboard and more.···<p><a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a> got cited as I wasn't in the department that day when the journalist showed up at Intel Research!</p><p>&quot;Instead of having all the hassle of putting things out in the environment that you have to maintain and that people can vandalize, you get a cheap PC, shove it in the back room of your shop and just put posters out front,&quot; said Richard Sharp, an Intel researcher here.</p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using Camera-Phones to Enhance Human-Computer Interaction</title><link href="https://anil.recoil.org/news/2004-ubicomp-camera-1" rel="alternate"></link><published>2004-09-01T01:00:00Z</published><updated>2004-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/2004-ubicomp-camera-1</id><summary type="html"><p>We gave a demo at <a href="https://www.ubicomp.org/ubicomp2004/">UbiComp 2004</a> all the way in Tokyo···&nbsp; <a href="https://anil.recoil.org/papers/2004-ubicomp-camera.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MIT Technology review covers SpotCodes</title><link href="https://anil.recoil.org/notes/mit-spotcodes" rel="alternate"></link><published>2004-09-01T01:00:00Z</published><updated>2004-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/mit-spotcodes</id><summary type="html"><p>We got more coverage of <a href="https://en.wikipedia.org/wiki/ShotCode">SpotCodes</a> and our startup <a href="https://anil.recoil.org/projects/ubiqinteraction">High Energy Magic</a>, leading to lots of interest in the technology.</p><p>Public touch-screen displays such as airport check-in kiosks aren’t known for having versatile interfaces; they usually lack keyboards or pointing devices, limiting users to a few navigational buttons. But new software from High Energy Magic of Cambridge, England, turns a camera phone with a Bluetooth wireless connection into a portable mouse and keyboard that can take full command of public displays, doing away with the old touch screen. Working with Intel’s Cambridge research lab, High Energy Magic has developed a set of circular symbols, similar in concept to bar codes, that can be displayed by public terminals. Camera phones loaded with the company’s software can translate the symbols into data. Once a phone locks onto one of the symbols, it uses the Bluetooth short-range wireless protocol to send information about its size, position, and orientation to the computer running the display. The phone can then act as a mouse, manipulating on-screen controls such as scroll bars. The company plans to license the technology to businesses, such as travel agencies, that operate public kiosks.<cite>-- <a href="https://web.archive.org/web/20241202023917/https://cdn.technologyreview.com/s/403022/phone-it-in/">MIT Technology Review</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Exploring tradeoffs in location-aware gaming using smartphones</title><link href="https://anil.recoil.org/news/netgames04-ctf-1" rel="alternate"></link><published>2004-08-01T01:00:00Z</published><updated>2004-08-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/netgames04-ctf-1</id><summary type="html"><p>The summer of 2004 was sufficient full of procrastination that the membersof the <a href="https://web.archive.org/web/20041212123550/http://sn17.org/">SN17 collective</a> in the···&nbsp; <a href="https://anil.recoil.org/papers/netgames04-ctf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>From the prawn of time</title><link href="https://anil.recoil.org/notes/wired-spotcode" rel="alternate"></link><published>2004-06-07T01:00:00Z</published><updated>2004-06-07T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/wired-spotcode</id><summary type="html"><p>I gave a talk at <a href="https://web.archive.org/web/20050204012820/http://www.quernstone.com/notcon04/">NotCon 2004</a> on SpotCodes, and it got covered in Wired Magazine!Of course, I shared the stage with a man telling the time <a href="https://www.wired.com/2004/06/from-the-prawn-of-time/">via a prawn sandwich</a>, so the limelight wasn't all just mine...</p><p>Anil Madhavapeddy and his colleagues at High Energy Magic think camera phones should be used for more than taking bad pictures. The company's SpotCode reader software lets camera phones recognize a circular tag and then communicate via Bluetooth with a local server.<cite>-- <a href="https://roxannekhamsi.com">Roxanne Khamsi</a> for <a href="https://www.wired.com/2004/06/from-the-prawn-of-time/">Wired</a></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cellphone as a virtual mouse/keyboard</title><link href="https://anil.recoil.org/notes/hem" rel="alternate"></link><published>2004-05-27T01:00:00Z</published><updated>2004-05-27T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/hem</id><summary type="html"><p>The <a href="https://anil.recoil.org/projects/ubiqinteraction">SpotCode</a> cellphone software was spun out into a startup called High Energy Magic Ltd, and was covered on Slashdot.</p><p>Check this out! High Energy Magic have announced a public beta of software to let you use your camera-phone as a physical mouse by just pointing and clicking and rotating it in the air.</p><p>There were also articles on <a href="https://web.archive.org/web/20060505171702/http://www.linuxdevices.com/news/NS3157166681.html">DeviceForge</a> that were picked up by quite a few outlets.</p>-<p><em>Update: You can see some of the videos under <a href="https://anil.recoil.org/projects/ubiqinteraction">Ubiquitous Interaction Devices</a> as well.</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Context-Aware Computing with Sound</title><link href="https://anil.recoil.org/news/audio-networking-1" rel="alternate"></link><published>2003-10-01T01:00:00Z</published><updated>2003-10-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/audio-networking-1</id><summary type="html"><p>While working as an intern at Intel Research Cambridge, <a class="contact" href="https://github.com/djs55">Dave Scott</a> and <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a> and I put together a fun system based on the emerging new class of smartphones. The project kicked off when we randomly experimented with our fancy Nokia smartphones and discovered that they didn't have anti-aliasing filters on the microphones! We argued that</p><p>[...] audio networking can be used as the basis for developing context-aware applications. Audio networking allows standard devices fitted with speakers and microphones (e.g. PDAs, laptops, desktop PCs and mobile phones) to exchange data and infer information about their environment. One of the key advantages of audio networking is that it enables context-aware applications to be immediately deployed on a large scale without requiring users to purchase and install additional hardware. <span class="morewords">[…<a href="https://anil.recoil.org/news/audio-networking-1">178 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/audio-networking.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>My static C bounds checker extension merged into OpenBSD</title><link href="https://anil.recoil.org/notes/gcc-bounds" rel="alternate"></link><published>2003-06-27T01:00:00Z</published><updated>2003-06-27T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/gcc-bounds</id><summary type="html"><p>After many rounds of review and helpful feedback from fellow developers,I merged my <a href="https://man.openbsd.org/gcc-local.1">GCC static bounds checking extension</a> into OpenBSD today!</p>···-<p>You can read more details in the <a href="https://man.openbsd.org/gcc-local.1"><em>gcc-local(1)</em></a> manual page as well.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The Case for Abstracting Security Policies</title><link href="https://anil.recoil.org/news/sam03-secpol-1" rel="alternate"></link><published>2003-06-01T01:00:00Z</published><updated>2003-06-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/sam03-secpol-1</id><summary type="html"><p>My first ever academic paper, written with the expert guidance of <a class="contact" href="https://www.cl.cam.ac.uk/~am21/">Alan Mycroft</a> and my PhD colleagues <a class="contact" href="https://github.com/djs55">Dave Scott</a> and <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a>! We worked on a system call policy language to help constrain application access to privileged resources, and implemented this on OpenBSD using <a href="https://man.openbsd.org/OpenBSD-5.1/systrace.1">systrace</a>. The paper describing the declarative language was presented at SAM 2003 in Las Vegas.</p>···&nbsp; <a href="https://anil.recoil.org/papers/sam03-secpol.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Moving to anil.recoil.org</title><link href="https://anil.recoil.org/notes/opening-anil-recoil-org" rel="alternate"></link><published>2003-05-16T01:00:00Z</published><updated>2003-05-16T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/opening-anil-recoil-org</id><summary type="html"><p>I've taken the opportunity to redesign my homepage and switch to its hopefully-permanentURL on <code>anil.recoil.org</code>. Many thanks to Jon Parise for giving me permission to base my-HTML upon his homepage's, saving me lots of design trouble!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Xen 2002</title><link href="https://anil.recoil.org/news/xen02-1" rel="alternate"></link><published>2003-01-04T00:00:00Z</published><updated>2003-01-04T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/xen02-1</id><summary type="html"><p>The first technical report on the <a href="https://anil.recoil.org/projects/xen">Xen Hypervisor</a> hypervisor is now available. I mainly contributed to the early NetBSD port (but have run into a snag with the lack of linear page tables in our paravirtual page implementation).</p>···-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ubiquitous Interaction Devices</title><link href="https://anil.recoil.org/projects/ubiqinteraction" rel="alternate"></link><published>2003-01-01T00:00:00Z</published><updated>2003-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/ubiqinteraction</id><summary type="html"><div><p><p>I investigated how to interface the new emerging class of smartphone devices···<p>In around 2005, we sold High Energy Magic Ltd. to a <a href="https://www.youtube.com/watch?v=sN01wkRzsfk">Dutch entrepreneur</a> so that <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a>, <a class="contact" href="https://github.com/djs55">Dave Scott</a> and I could join the <a href="https://anil.recoil.org/projects/xen">Xen Hypervisor</a> startup company. However, the ubiquitous computing ideals that drove much of our work continue to persist, and in 2018 I started thinking about this again as part of my <a href="https://anil.recoil.org/projects/osmose">Interspatial OS</a> project. The idea of building truely ubiquitous environments (without smartphones) is resurrected again there, and you can start reading about it in <a href="https://anil.recoil.org/papers/2018-hotpost-osmose">An architecture for interspatial communication</a>.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional Internet Services</title><link href="https://anil.recoil.org/projects/melange" rel="alternate"></link><published>2003-01-01T00:00:00Z</published><updated>2003-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/melange</id><summary type="html"><div><p><p>My PhD dissertation work proposed an architecture for constructing new implementations of standard Internet protocols with integrated formal methods such as model checking and functional programming that were then not used in deployed servers. A more informal summary is &quot;rewrite all the things in OCaml from C!&quot;, which lead to a merry adventure into implementing many networks protocols from scratch in a functional style, and learning lots about how to enforce specifications without using a full blown proof assistant.</p>···-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Started PhD at Cambridge</title><link href="https://anil.recoil.org/notes/starting-phd" rel="alternate"></link><published>2002-09-01T01:00:00Z</published><updated>2002-09-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/starting-phd</id><summary type="html"><p>I started my PhD at the Systems Research Group in Cambridge this week, based inthe <a href="https://www.cl.cam.ac.uk">Computer Laboratory</a> and <a href="https://robinson.cam.ac.uk">Robinson<a href="https://netapp.com">NetApp</a>, but my primary focus will be on the <a href="https://anil.recoil.org/projects/xen">Xen</a>-hypervisor and other systems research topics.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Streamlining PHP on OpenBSD</title><link href="https://anil.recoil.org/notes/php-port-layout-openbsd" rel="alternate"></link><published>2002-06-24T01:00:00Z</published><updated>2002-06-24T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/php-port-layout-openbsd</id><summary type="html"><p>I've committed a big improvement to the PHP port on OpenBSD, by switching from a complex set of FLAVOR tags over to a set of independently installing &quot;multi packages&quot;.</p>···-<p>This should make the use of <code>pkg_add</code> for PHP much simpler for new users. Any problems, please file a bug report or let me know.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Streaming U2 live across the Internet</title><link href="https://anil.recoil.org/news/netapp-tr-3152-1" rel="alternate"></link><published>2002-04-01T01:00:00Z</published><updated>2002-04-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/netapp-tr-3152-1</id><summary type="html"><p>After the <a href="https://anil.recoil.org/notes/mars-polar-lander">Mars Polar Lander crashed</a>, I took a job at NetApp working as theproduct architect for <a href="https://en.wikipedia.org/wiki/NetCache">NetCache</a>. Among the hundreds···&nbsp; <a href="https://anil.recoil.org/papers/netapp-tr-3152.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Xen Hypervisor</title><link href="https://anil.recoil.org/projects/xen" rel="alternate"></link><published>2002-01-01T00:00:00Z</published><updated>2002-01-01T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/projects/xen</id><summary type="html"><div><p><p>I was on the original team at Cambridge that built the Xen hypervisor in 2002-- the first open-source &quot;type-1&quot; hypervisor that ushered in the age of cloud···at RISC-V architectures and embedded systems again as part of <a href="https://anil.recoil.org/projects/osmose">Interspatial OS</a>.</p>-</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Added a caching subsystem to Horde</title><link href="https://anil.recoil.org/notes/horde-cache" rel="alternate"></link><published>2001-08-20T01:00:00Z</published><updated>2001-08-20T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/horde-cache</id><summary type="html"><p>While hacking on making Chora performant enough to work as the official PHP CVS web-viewer, I added in a general caching subsystem into the Horde PHP framework. Do let me know if you end up finding a use for it in your own applications.</p>···<p><cite> -- <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20010820/003116.html">Anil Madhavapeddy</a></cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Chora now the production CVS viewer for PHP</title><link href="https://anil.recoil.org/notes/chora-live-on-php" rel="alternate"></link><published>2001-08-05T01:00:00Z</published><updated>2001-08-05T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/chora-live-on-php</id><summary type="html"><p>I spent a chunk of time through the year working on the <a href="https://horde.org">Horde</a> project. I began when I got commit to <a href="https://www.horde.org/apps/imp/">IMP webmail</a> to fix some bugs in the MIME rendering for our Recoil deployment. You can see my code commits on the <a href="https://marc.info/?a=97359997900001&amp;r=6">horde-cvs</a> mailing list archive.</p><p>After getting to grips with the PHP code, I then went on to totally rewrite the <a href="https://www.horde.org/apps/chora/">Chora</a> version control viewer so that the CVS repositories for Horde could be browsed online instead of only via the command line.</p><p>I'm extremely proud to report that the <a href="http://php.net">PHP project</a> has <a href="https://lists.horde.org/archives/dev/Week-of-Mon-20010806/002886.html">now deployed Chora</a> for production use to serve up <code>cvs.php.net</code>, making it our biggest user by far. Thanks for making my day, Rasmus!</p>···<cite> -- <a href="https://lists.horde.org/archives/dev/Week-of-Mon-20010806/002886.html">Rasmus Lerdorf</a>, php.net</cite></p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Added internationalisation to the Chora viewer</title><link href="https://anil.recoil.org/notes/chora-internationalised" rel="alternate"></link><published>2001-08-03T01:00:00Z</published><updated>2001-08-03T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/chora-internationalised</id><summary type="html"><p>One of the coolest things about hacking on the <a href="https://horde.org">Horde</a> framework is that it gives me lots of features for free that I can use in my web applications. The latest thing I added to the Chora CVS viewer today is the internationalisation framework, so that the frontend can be translated to multiple languages.</p>-<p>I've added in a simple <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20010730/002975.html">German translation</a> to start with, but please contribute your own strings if you get the opportunity.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>GPL release of OpenFX</title><link href="https://anil.recoil.org/notes/openfx" rel="alternate"></link><published>2001-02-10T00:00:00Z</published><updated>2001-02-10T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/openfx</id><summary type="html"><p>Slashdot covers the GPL release of <a href="http://openfx.org">OpenFX</a>, which I worked on with Stuart Ferguson (my brother's PhD supervisor in Queen's University Belfast).</p><p>It has a renderer and raytrace engine, NURBS support, kinematics-based animation, morphing, a plugin API - and it's under the GPL. Currently only for Windows, but they're working on a Linux and FreeBSD port.</p>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I am now a core PHP developer</title><link href="https://anil.recoil.org/notes/commit-access-to-php" rel="alternate"></link><published>2001-01-09T00:00:00Z</published><updated>2001-01-09T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/commit-access-to-php</id><summary type="html"><p>I've been maintaining <a href="http://php.net">PHP</a> on OpenBSD for a while now, including the core package distributed as binary packages.</p>-<p>So as of today, the core team has decided I'm trustworthy enough to have my own commit bit to the central PHP repository, where I can commit code fixes and also maintain the <a href="https://www.php.net/manual/en/install.unix.openbsd.php">OpenBSD on PHP</a> official instructions. You can contact me on <code>avsm@php.net</code> if you need any help!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I'm now an OpenBSD developer</title><link href="https://anil.recoil.org/notes/openbsd-developer" rel="alternate"></link><published>2000-12-26T00:00:00Z</published><updated>2000-12-26T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/openbsd-developer</id><summary type="html"><p>I've been using OpenBSD for a few years now as the primary OS for <a href="https://anil.recoil.org/news?t=recoil">recoil</a>···-<p>Many thanks to Jakob for the help with getting started, and for ok'ing my first commit.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I'm now a Horde core team member</title><link href="https://anil.recoil.org/notes/horde-developer" rel="alternate"></link><published>2000-10-16T01:00:00Z</published><updated>2000-10-16T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/horde-developer</id><summary type="html"><p>After contributing some patches, I've now got the honour of becoming a <a href="https://www.horde.org/community/team">core team</a> member of the <a href="https://horde.org">Horde</a> project. Many thanks to Chuck Hagenbuch and Jon Parise for their trust in me!</p>-<p>I'm planning on fixing bugs in IMP and the webmail subsystem, and am getting interested in version control and CVS as well, so I'm going to look at Whups and Chora ore. You can follow my commits on the <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20001016/author.html">Horde-CVS</a> commit archives, where I am <code>avsm@horde.org</code>!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Paper on the NASA Mars Polar Lander website architecture</title><link href="https://anil.recoil.org/news/netapp-tr-3071-1" rel="alternate"></link><published>2000-07-01T01:00:00Z</published><updated>2000-07-01T01:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/news/netapp-tr-3071-1</id><summary type="html"><p>Although the Mars Polar Lander ended up <a href="https://en.wikipedia.org/wiki/Mars_Polar_Lander#See_also">crashing</a>, the website itself was one of the busiest websites in the world at the time during the approach to the landing. I was the person handling the website architecture and the amazing <code>webmaster@mars.nasa.gov</code> account at the time. I worked closely <a href="https://anil.recoil.org/notes/mars-polar-lander">with Sun</a> and NetApp and wrote up a technical report on how the Mars Polar Lander website acceleration architecture worked.</p>···&nbsp; <a href="https://anil.recoil.org/papers/netapp-tr-3071.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>-</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Slashdot covers the Mars Polar Lander</title><link href="https://anil.recoil.org/notes/mars-polar-lander" rel="alternate"></link><published>1999-12-03T00:00:00Z</published><updated>1999-12-03T00:00:00Z</updated><author><name>Anil Madhavapeddy (anil@recoil.org)</name></author><id>https://anil.recoil.org/notes/mars-polar-lander</id><summary type="html"><p>In my capacity as <a href="https://anil.recoil.org/papers/netapp-tr-3071">webmaster</a> of the Mars Polar Lander, I submitted a note to Slashdot. Although our amazing distributed website took quite a beating (with some estimated 1 in 4 Internet users trying to access it simultaneously), the Lander itself <a href="https://www.wired.com/1999/12/mars-lander-wont-phone-home/">sadly crashed</a>. On the bright side, I got mentioned in a <a href="https://web.archive.org/web/20020106163651/http://www.sun.com/smi/Press/sunflash/1999-12/sunflash.991202.1.html">Sun press release</a> because of the Sun Netra T1 servers they gave us to host the website!</p><p>You can read more about the architecture behind the site in &quot;<a href="https://anil.recoil.org/papers/netapp-tr-3071">Application of a Distributed Web Site Acceleration: Mars Polar Lander</a>&quot;.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry></feed>
···+<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Atomic EEG</title><link href="https://example.com/" rel="alternate"></link><link href="https://example.com/eeg.xml" rel="self"></link><id>https://example.com/</id><updated>2025-04-08T01:00:00Z</updated><author><name>Feed Aggregator</name></author><subtitle>Aggregated Atom feeds</subtitle><entry><title>Coping and Capping</title><link href="https://mort.io/blog/coping-and-capping/" rel="alternate"></link><published>2025-04-08T01:00:00Z</published><updated>2025-04-08T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/coping-and-capping/</id><summary type="html"><p>Well that was fun! Quite high up there in the set of things that I never even<a href="https://en.wikipedia.org/wiki/Simon_McDonald%2C_Baron_McDonald_of_Salford">Simon</a>,···+<p>I hope everyone had a good time anyway!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Weeknotes: 7th April 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-04-07/" rel="alternate"></link><published>2025-04-07T10:07:12Z</published><updated>2025-04-07T10:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-04-07/</id><summary type="html"><h1>Last Week</h1><p>We welcomed <a href="https://www.tunbury.org/">Mark</a>, <a href="https://www.dra27.uk/blog/">David</a>, and <a href="https://www.cst.cam.ac.uk/people/jjl25">Jon</a> to the group recently, and I finally found time to sit down and havesome great discussions with them all on what we've been working on this last year, and how we might all collaborate on things around that. In what was an otherwise frustrating week on the technical work front, it was great to have some inspiring discussions on what we might work on over the coming year.</p>···<li>Look forward to discussions with group visitor <a href="https://homepages.inf.ed.ac.uk/omacaod/">Oisin Mac Aodha</a> at the end of the week around map modelling.</li>+</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Box API with OCaml and Claude</title><link href="https://www.tunbury.org/ocaml-claude-box/" rel="alternate"></link><published>2025-04-07T01:00:00Z</published><updated>2025-04-07T01:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/ocaml-claude-box</id><summary type="html"><p>Over the weekend, I decided to extend my <a href="https://box.com">Box</a> <a href="https://github.com/mtelvers/ocaml-box-diff">tool</a> to incorporate file upload. There is a straightforward POST API for this with a <code class="language-plaintext highlighter-rouge">curl</code> one-liner given in the Box <a href="https://developer.box.com/reference/post-files-content/">documentation</a>. Easy.</p><p>The documentation for <a href="https://mirage.github.io/ocaml-cohttp/cohttp-eio/Cohttp_eio/Client/index.html">Cohttp-eio.Client</a> only gives the function signature for <code class="language-plaintext highlighter-rouge">post</code>, but it looked pretty similar to <code class="language-plaintext highlighter-rouge">get</code>, which I had already been working with. The <a href="https://github.com/mirage/ocaml-cohttp">README</a> for Cohttp gave me pause when I read this comment about multipart forms.</p>···<p>As a relatively new adopter of OCaml as my language of choice, the most significant challenge I face is documentation, particularly when I find a library on opam which I want to use. I find this an interesting contrast to the others in the community, where it is often cited that tooling is the most significant barrier to adoption. In my opinion, the time taken to set up a build environment is dwarfed by the time spent in that environment iterating code.</p>+<p>I would like to take this opportunity to thank all contributors to opam repository for their time and effort in making packages available. This post mentions specific packages but only to illustrate my point.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>2025-04-06 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/04/06/weekly-notes.html" rel="alternate"></link><published>2025-04-06T01:00:00Z</published><updated>2025-04-06T01:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/04/06/weekly-notes</id><summary type="html"><p>As mentioned in my previous post, I have been working on the Gini Coefficient. However, when trying to run the code at a different geographical scale, it crashed, so I decided to reformat the code into a module following software engineering practices, which has been my sole focus the past week. I realised I had written the same function in multiple scripts, making the code redundant. This resulted in the reduction of the number of files and depedencies now are more clear. I switched the python project from an entirely geopandas-based workflow to a an Apache Sedona-based one, which gives me more flexibility and efficiency. I added a couple of new features that enable the location of trees around multiple buffer for each building in England and I also calculated the euclidean distance between any building and their closest park. In addition to this, I found a workoaround to use spark in R to be able to plot my results using ggplot2, which I prefer over matplotlib, given that it uses the grammar of graphics. Not to mention the GIni Coefficient functions and many other econometric functions are easily available in R. With spark, in R I can do the analysis on the parquet files I created the previous week (I stopped using duckdb, since its analytical operations don’t match sparklyr).</p><p>This week my work will be focused on integrating the modules into one table, aggregating by the geographic level, which means calculating the Gini Coefficient at the same geographic level of the canopy cover and the spectral indexes (NDVI, NDBI, NDWI). Moreover, I will continue working with the document as some other groups and organisations are working similar goals. Just this past Saturday, <a href="https://www.forestresearch.gov.uk/tools-and-resources/fthr/trees-outside-woodland-map/">Forest Research</a> introduced a new map for trees outside woodland, which uses a similar approach to <a href="https://ancazugo.github.io/research/outreach/2025/03/23/weekly-notes.html">mine</a>, but my objective is beyond mapping as I want to evaluate green equity. The image is comparison of my map and theirs.</p>+<p>On my side project with the Estates division, I managed to automate the AutoCAD workflow to reformat floor plan files for further use in the ArcGIS ecosystem to build a floor-aware geodatabase. This will save me (and the Estates team) a ton of time when preprocessing DWG files. Following what I’ve been doing for my own code, I’ve also implemented good software enginneering practices for this project, which will hopefully become a package for internal use in the University. I’ve been using uv as a package manager for this project and it’s ridiculously fast compared to poetry and the docstring is so easily written by VS Code and Copilot. The next step is to implement the Building class for the geodatabase and create the visualization for occupancy.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Semi distributed filesystems with ZFS and Sanoid</title><link href="https://anil.recoil.org/notes/syncoid-sanoid-zfs" rel="alternate"></link><published>2025-04-05T01:00:00Z</published><updated>2025-04-05T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/syncoid-sanoid-zfs</id><summary type="html"><p>Over in my <a href="https://www.cst.cam.ac.uk/research/eeg">EEG</a> group, we have a <em>lot</em> of primary and secondary datasets lying around: 100s of terabytes of <a href="https://anil.recoil.org/projects/rsn">satellite imagery</a>, <a href="https://anil.recoil.org/projects/life">biodiversity data</a>, <a href="https://anil.recoil.org/projects/ce">academic literature</a>, and the intermediate computations that go along with them. Our trusty central shared storage server running <a href="https://www.truenas.com">TrueNAS</a> stores data in <a href="https://en.wikipedia.org/wiki/ZFS">ZFS</a> and serves it over <a href="https://en.wikipedia.org/wiki/Network_File_System">NFSv4</a> to a bunch of hosts. This is rapidly becoming a bottleneck as our group and datasets grow, and <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> has been steadily adding <a href="https://www.tunbury.org/kingston-drives/">lots more raw capacity</a>. The question now is how to configure this raw SSD capacity into a more nimble storage setup. If anyone's seen any systems similar to the one sketched out below, I'd love to hear from you.</p><p>The first design constraint is to get rid of centralised network storage. This is both slow when compared to a modern NVMEs, and also hard to extend beyond the <a href="https://anil.recoil.org/papers/2015-sosp-sibylfs">POSIX-ish</a> API to take advantage of filesystem-specific features like snapshots or <a href="https://docs.rs/reflink/latest/reflink/">reflink clones</a>. We also don't take much advantage of the simultaneous use of the network storage. Instead, we'd like to just make every host materialise the portion of storage it needs locally by cloning it from the remote server.</p><p>The alternative I'm considering here is to use ZFS filesystems on the nodes themselves rather than NFS. This has the upside of having the cloned data be directly available on the local disk of the host that's using it, meaning that there's no performance impact as with networked storage. ZFS also scales fairly enormous sizes, and so it seems likely that we won't run into an upper bound due to this choice of filesystem in the medium term.</p>···<li><strong>Switching from ZFS to XFS locally:</strong> While ZFS seems like the ideal replication filesystem, it still lacks some of the cooler local features like <a href="https://github.com/openzfs/zfs/issues/405#issuecomment-1880208374">XFS reflinks</a>. It would be nice to find an efficient way to materialise an XFS filesystem from a ZFS base, but without copying absolutely everything. This is either impossibly difficult or really easy via some cunning use of <a href="https://en.wikipedia.org/wiki/OverlayFS">overlayfs</a>. Probably impossible though, given how much block-level information is needed to do deduplication.</li><li><strong>ZFS labels for policy:</strong> Most ZFS tools use custom key/value labels on datasets to implement policies. For example, a <code>syncoid:sync</code> label can be used to tell syncoid to include a particular recursive dataset in its replication. There are some scalability limits in just how many labels you can add before slowing a machine down a crawl (though not as bad as how many live mounts). <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> started some WIP <a href="https://github.com/quantifyearth/ocaml-zfs">ocaml-zfs</a> bindings to <a href="https://github.com/openzfs/zfs/blob/master/include/libzfs.h">libzfs</a> to help explore this question.</li>+<p>So lots of work left to do here, but quite good fun as systems hacking goes! When <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> is <a href="https://www.tunbury.org/kingston-drives/">done installing</a> our new drives, we'll have a few petabytes of raw capacity to implement this system over...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Rewarding influence</title><link href="https://mort.io/blog/happy-day/" rel="alternate"></link><published>2025-04-05T01:00:00Z</published><updated>2025-04-05T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/happy-day/</id><summary type="html"><p><a href="https://2025.eurosys.org/index.html">EuroSys 2025</a> was co-located with <a href="https://www.asplos-conference.org/asplos2025/">ASPLOSprimarily because <a href="https://mort.io/blog/tdis-accepted">two students had papers in the TDIS···+ignorance… :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>opam repo ci job timeouts</title><link href="https://www.tunbury.org/opam-repo-ci/" rel="alternate"></link><published>2025-04-04T01:00:00Z</published><updated>2025-04-04T01:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/opam-repo-ci</id><summary type="html"><p>It’s Tuesday morning, and virtually all opam repo ci jobs are failing with timeouts. This comes at a critical time as these are the first jobs following the update of <a href="https://github.com/ocurrent/ocaml-version">ocurrent/ocaml-version</a> <a href="https://www.tunbury.org/recent-ocaml-version/">noted</a> on 24th March.</p><p>The <a href="https://opam.ci.ocaml.org/github/ocaml/opam-repository">opam repo ci</a> tests all PRs on <a href="https://github.com/ocaml/opam-repository">opam-repository</a>. The pipeline downloads Docker images, which contain the root filesystem for various Linux distributions, architectures, and OCaml versions, which are used as the base environment to run the tests. These base images are created by the <a href="https://images.ci.ocaml.org">base image builder</a>. <a href="https://github.com/ocurrent/docker-base-images/pull/317">PR#317</a> update these base images in three ways:</p>···<p>Musing on this issue with David, the idea of using the latest tag rather than head commit seemed like a good compromise. This allowed us to specifically test pre-release versions of opam when they were tagged but not be at the cutting edge with the risk of impacting a key service.</p>+<p>We need the latest tag by version number, not by date, as we wouldn’t want to revert to testing on, for example, 2.1.7 if something caused a new release of the 2.1 series. The result was a function which runs <code class="language-plaintext highlighter-rouge">git tag --format %(objectname) %(refname:strip=2)</code> and semantically sorts the version numbers using <code class="language-plaintext highlighter-rouge">OpamVersion.compare</code>. See <a href="https://github.com/ocurrent/docker-base-images/pull/318">PR#318</a>.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>2nd Programming for the Planet workshop CFP out</title><link href="https://anil.recoil.org/notes/propl-at-splash" rel="alternate"></link><published>2025-04-03T01:00:00Z</published><updated>2025-04-03T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/propl-at-splash</id><summary type="html"><p><a class="contact" href="https://dorchard.github.io">Dominic Orchard</a> and I had a blast <a href="https://plas4sci.github.io/conference/2024/01/22/propl.html">running</a> the first <a href="https://propl.dev">PROPL</a> workshop a couple of years ago, with a full room and engaged audience in POPL in London. Last year, our sister conference <a href="https://sicsa.ac.uk/loco/loco2024/">LOCO</a> took over, and it's our turn again this year! PROPL will return for a <a href="https://conf.researchr.org/home/icfp-splash-2025/propl-2025">second outing</a> in October, co-located with <a href="https://icfp25.sigplan.org/">ICFP</a>/SPLASH in Singapore in October. Read the <a href="https://conf.researchr.org/home/icfp-splash-2025/propl-2025#Call-for-Papers">call for papers</a> here (deadline 3rd July 2025).</p><p><figure class="image-right"><img alt="Dominic prepping for the first PROPL in the rather delightful venue" class="content-image" src="https://anil.recoil.org/images/propl-1.webp" title="Dominic prepping for the first PROPL in the rather delightful venue" /><figcaption>Dominic prepping for the first PROPL in the rather delightful venue</figcaption></figure><p>We'd love to get wider participation in computer science interacting with matters of climate and biodiversity:</p>···<p>For those curious about the first PROPL outing, all of the talk videos are all online <a href="https://www.youtube.com/watch?v=yZeS4oN_XeI&amp;list=PLyrlk8Xaylp7j9K6CETKpQSpCIOcJ9iO9">on YouTube</a> or our <a href="https://watch.eeg.cl.cam.ac.uk/c/propl24/videos">EEG video mirror</a> (ad-free).</p><p><figure class="image-center"><img alt="We&#x27;re looking forward to seeing you in Singapore for the second outing!" class="content-image" src="https://anil.recoil.org/images/propl-3.webp" title="We&#x27;re looking forward to seeing you in Singapore for the second outing!" /><figcaption>We&#x27;re looking forward to seeing you in Singapore for the second outing!</figcaption></figure>+<p><small class="credits">(Thanks to Lena Yang for spotting typos.)</small></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Everything is a file; except when it’s not</title><link href="https://www.dra27.uk/blog/platform/2025/04/03/cloexec.html" rel="alternate"></link><published>2025-04-03T01:00:00Z</published><updated>2025-04-03T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2025/04/03/cloexec</id><summary type="html"><p>Some titles make more sense than others. One of my oldest contributions to OCamlwas a complete overhaul of <a href="https://ocaml.org/p/ocaml-base-compiler/5.2.1/doc/Unix/index.html#file-status"><code class="language-plaintext highlighter-rouge">Unix.stat</code> et al</a>in <a href="https://github.com/ocaml/ocaml/pull/462">ocaml/ocaml#462</a> which formed partof OCaml 4.03. As part of the work on <a href="https://ocaml.org/p/msvs-detect/latest"><code class="language-plaintext highlighter-rouge">msvs-detect</code></a>···+clearly still going on. But that’s for next time…</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>More Kingston Drives</title><link href="https://www.tunbury.org/kingston-drives/" rel="alternate"></link><published>2025-04-03T01:00:00Z</published><updated>2025-04-03T01:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/kingston-drives</id><summary type="html"><p>We have received the second batch of 40 x 7.68TB Kingston SSD drives, bringing the total to 50 drives.</p><p>We now have 5 fully populated Dell PowerEdge R640 with a total raw capacity of 384TB.</p>+<p><img alt="" src="https://www.tunbury.org/images/kingston-forty-with-caddies.png" /></p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Ubuntu with ZFS root</title><link href="https://www.tunbury.org/ubuntu-with-zfs-root/" rel="alternate"></link><published>2025-04-02T01:00:00Z</published><updated>2025-04-02T01:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/ubuntu-with-zfs-root</id><summary type="html"><p>The installation of <a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2022.04%20Root%20on%20ZFS.html">Ubuntu on ZFS</a>contains about 50 steps of detailed configuration. I have 10 servers to install, so I would like to script this process as much as possible.</p>···<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ansible-playbook <span class="nt">-i</span> hosts <span class="nt">--limit</span> your.fqdn ubuntu-zfs.yml+<p>The playbook is available as a GitHub gist <a href="https://gist.github.com/mtelvers/2cbeb5e35f43f5e461aa0c14c4a0a6b8">zfs-ubuntu.yml</a>.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Updating Docker and Go</title><link href="https://www.tunbury.org/go-docker/" rel="alternate"></link><published>2025-04-01T01:00:00Z</published><updated>2025-04-01T01:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/go-docker</id><summary type="html"><p>For some time, we have had issues on Ubuntu Noble when extracting<a href="https://github.com/ocaml/infrastructure/issues/121">ocaml/infrastructure#121</a>.···+<a href="https://gist.github.com/mtelvers/ced9d981b9137c491c95780390ce802c">golang+docker.yml</a></p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Weeknotes: 31th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-31/" rel="alternate"></link><published>2025-03-31T10:07:12Z</published><updated>2025-03-31T10:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-31/</id><summary type="html"><h1>Last Week</h1><p>I was still coming off the back of being unwell the previous week, so not the most productive week</p><p>I got the full <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR calculation</a> running, which means I now have two full biodiversity impact pipelines running built on the same AoH code underpinnings. I checked in with Chess, and it looks like I'm mostly there, but I just want to check some of the details, as it looks like I'm losing some costal pixels compared to her results, which makes me suspect my clipping for the marine layer might be out.</p>···<li>Process the custom LIFE run - we have a meeting on this the following week, and I need maps for Ali in advance of that</li><li>Look at my STAR code and work out if I need to fix things before I ask Chess to review my results again</li>+</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Shelter, Hazel and More!</title><link href="https://patrick.sirref.org/weekly-2025-03-31/" rel="alternate"></link><published>2025-03-31T01:00:00Z</published><updated>2025-03-31T01:00:00Z</updated><author><name>PatrickF</name></author><id>https://patrick.sirref.org/weekly-2025-03-31/</id><summary type="html"><p>Last week I focused on <a href="https://patrick.sirref.org/shelter/">Shelter</a> -- our idea that shells should have the same ability as reproducible build tools like Nix or Docker. To this end I now have a fairly fleshed out prototype. </p>···<p>I recently wrote about the painful experience of <a href="https://patrick.sirref.org/ppxlib-5-2/">miragrating ppxlib to the 5.2 OCaml AST</a>. This week, Nathan Rebours and I merged a PR to add the <a href="https://github.com/ocaml-ppx/ppxlib/pull/558">5.3 AST</a>! Ppxlib has been playing catch-up with the compiler and we decided it was best to try to catch up quickly and deal with the ecosystem fallout all at once rather than incrementally. With this new AST merged, ppx authors can now use the new <code>Pexp_effect</code> parsetree node. I'll write a little more about this in a separate post soon. </p>+</section></summary><category term="Weeklies"></category></entry><entry><title>Installation order for opam packages</title><link href="https://www.tunbury.org/opam-post-deps/" rel="alternate"></link><published>2025-03-31T01:00:00Z</published><updated>2025-03-31T01:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/opam-post-deps</id><summary type="html"><p>Previously, I discussed the installation order for a simple directed acyclic graph without any cycles. However, <code class="language-plaintext highlighter-rouge">opam</code> packages include <em>post</em> dependencies. Rather than package A depending upon B where B would be installed first, <em>post</em> dependencies require X to be installed after Y. The <em>post</em> dependencies only occur in a small number of core OCaml packages. They are quite often empty and exist to direct the solver. Up until now, I had been using a base layer with an opam switch containing the base compiler and, therefore, did not need to deal with any <em>post</em> dependencies.</p><p>Here is the graph of <a href="https://www.tunbury.org/images/0install.2.18-with-post-with-colour.pdf">0install</a> with <em>post</em> dependencies coloured in red.</p>···<p>In my testing, the installation order matches the order used by opam within the variation allowed above.</p>+<p>Layers can be built up using the intersection of packages installed so far and the required dependencies.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>2025-03-30 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/30/weekly-notes.html" rel="alternate"></link><published>2025-03-30T00:00:00Z</published><updated>2025-03-30T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/03/30/weekly-notes</id><summary type="html"><p>The past week or so I’ve been working on cleaning the code in my 3-30-300 analysis repo. Most of the code was running fine but many functions were repeated in the modules, and it wasn’t really structured as a package. This was partially motivated by a workshop about good coding practices by the photonics group in the department of electrical engineering. Having a clean repo makes all the difference when running your experiments.</p><p>In my meeting with <a href="https://anil.recoil.org/">Anil</a> we discussed on the best ways to measure the Gini coefficient for green space accessibility and availability and how they relate to equity. Although, widely used in econometrics, it presents some problems when it comes to scale. For this reason, I am calculating the 3-30-300 metrics and the remote sensing-derived metrics at the different statistical geographies in the UK (OA, LSOA, MSOA, LAD, RGN), because I feel that, especially for the 3 and 300 components, the gini coefficient is a better measure of the zonal behaviour than just averaging the count for all the buildings. So what I am testing is: for any given geography at any level (a block in Cambridge), estimate the 3 (number of trees around a radius) and 300 (distance to park) for all the buildings inside the area and calculate the gini coefficient, normalised by population. I have to say that this was the other reason why I decided to restructure the code because I tried to run it at the other scales and it broke. Hence, why I swithced all my input data to parquet format that I can come back to using R or Python (I prefer R for graphics 😂). I’ve been messing around with duckdb (kudos to <a href="https://digitalflapjack.com/">Michael</a>) and clickhouse (as suggested once by Anil) and they work great; the only problem is in their spatial support, where Apache Sedona and Spark have the edge at the moment.</p>+<p>Finally, I got to help <a href="https://charlesemogor.com/">Charles Emogor</a> one last time (in-person at least) before his trip to Harvard for his postdoc. It was mostly related in setting up his coding workspace in VS Code and Positron (R version of VS Code), as well as updating his webpage and some geospatial operations.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Not one but two accepted papers and a Ph.D.</title><link href="https://mort.io/blog/tdis-accepted/" rel="alternate"></link><published>2025-03-30T00:00:00Z</published><updated>2025-03-30T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/tdis-accepted/</id><summary type="html"><p>As I find myself once more on a train to parts unknown (to me at least), a brief···<div class="footnote-definition" id="1"><sup class="footnote-definition-label">1</sup>+</div></summary><category term="mort’s mythopœia"></category></entry><entry><title>Box Diff Tool</title><link href="https://www.tunbury.org/box-diff/" rel="alternate"></link><published>2025-03-30T00:00:00Z</published><updated>2025-03-30T00:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/box-diff</id><summary type="html"><p>Box has an unlimited storage model but has an upload limit of 1TB per month. I have been uploading various data silos but would now like to verify that the data is all present. Box has an extensive <a href="https://developer.box.com/reference/">API</a>, but I only need the <a href="https://developer.box.com/reference/get-folders-id-items/">list items in folder</a> call.</p><p>The list-items call assumes that you have a folder ID which you would like to query. The root of the tree is always ID 0. To check for the presence of file <code class="language-plaintext highlighter-rouge">foo</code> in a folder tree <code class="language-plaintext highlighter-rouge">a/b/c/foo</code>, we need to call the API with folder ID 0. This returns a list of entries in that folder. e.g.</p>···<p>To deal with folders of any size, we should use the marker system. For this, we pass <code class="language-plaintext highlighter-rouge">?usemarker=true</code> to the first GET request, which causes the API to return <code class="language-plaintext highlighter-rouge">next_marker</code> and <code class="language-plaintext highlighter-rouge">prev_marker</code> as required as additional JSON properties. Subsequent calls would use <code class="language-plaintext highlighter-rouge">?usemarker=true&amp;marker=XXX</code>. The end is detected by the absence of the <code class="language-plaintext highlighter-rouge">next_marker</code> when no more entries are available.</p>+<p>The project can be found on GitHub in <a href="https://github.com/mtelvers/ocaml-box-diff">mtelvers/ocaml-box-diff</a>.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>New preprint on benchmarking ultra-low power neural accelerators</title><link href="https://anil.recoil.org/news/2025-npu-bench-1" rel="alternate"></link><published>2025-03-28T00:00:00Z</published><updated>2025-03-28T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2025-npu-bench-1</id><summary type="html"><p><a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> just released our latest preprint on how to make sense of the growing number of dedicated, ultra-low-power 'neural network accelerators' that are found in many modern embedded chipsets. My interest in this derives from wanting to decouple from the cloud when it comes to <a href="https://anil.recoil.org/projects/osmose">low-latency local environments</a>, and this needs fast tensor operations in hardware. Josh found a huge number of interesting NPUs in modern low-cost chips, ranging from <a href="https://www.espressif.com/en/products/socs/esp32">ESP32</a>-based boards over to <a href="https://arm.com">ARM</a> ones. All of these have quite a variety of tradeoffs, from the operations supported (which affects which models can be run on them) to the amount of memory and CPU power.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2025-npu-bench.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Core Dev Meeting</title><link href="https://www.dra27.uk/blog/platform/2025/03/28/ocaml-dev-meeting.html" rel="alternate"></link><published>2025-03-28T00:00:00Z</published><updated>2025-03-28T00:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2025/03/28/ocaml-dev-meeting</id><summary type="html"><p>OCaml Core Dev meeting at <a href="https://inria.fr">Inria</a> yesterday. These are···+towards actually opening the pull requests for Relocatable OCaml…</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Dell PowerEdge R640 Storage Server</title><link href="https://www.tunbury.org/dell-poweredge-r640/" rel="alternate"></link><published>2025-03-27T00:00:00Z</published><updated>2025-03-27T00:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/dell-poweredge-r640</id><summary type="html"><p>We have received our first batch of 7.68TB Kingston SSD drives for deployment in some Dell PowerEdge R640 servers, which will be used to create a large storage pool.</p>···+<p>We will run these with a ZFS file system, so need to decide on whether we want to use the hardware RAID features or follow the advice on Wikipedia on the <a href="https://en.wikipedia.org/wiki/ZFS#Avoidance_of_hardware_RAID_controllers">Avoidance of hardware RAID controllers</a>. Online opinion is divided. My summary is that hardware RAID will be easier to manage when a disk fails, but ZFS on the raw disks will have some integrity advantages.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>How This Site Is Build</title><link href="https://ryan.freumh.org/how-this-site-is-built.html" rel="alternate"></link><published>2025-03-26T00:00:00Z</published><updated>2025-03-26T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/how-this-site-is-built.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>FreeBSD 14.2 Upgrade</title><link href="https://www.tunbury.org/freebsd-14.2/" rel="alternate"></link><published>2025-03-26T00:00:00Z</published><updated>2025-03-26T00:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/freebsd-14.2</id><summary type="html"><p>CI workers <code class="language-plaintext highlighter-rouge">spring</code> and <code class="language-plaintext highlighter-rouge">summer</code> run FreeBSD and need to be updated.</p><p>Check the current version of FreeBSD which we have with <code class="language-plaintext highlighter-rouge">uname -r</code>.</p>···<p>To update the the FreeBSD base images used by the CI services, I applied <a href="https://github.com/ocurrent/freebsd-infra/pull/13">PR#13</a> to <a href="https://github.com/ocurrent/freebsd-infra">ocurrent/freebsd-infra</a>.</p>+<p>This was followed up by <a href="https://github.com/ocurrent/ocaml-ci/pull/1007">PR#1007</a> on ocurrent/ocaml-ci and <a href="https://github.com/ocurrent/opam-repo-ci/pull/427">PR#427</a> to ocurrent/opam-repo-ci.</p></summary><category term="Tunbury.ORG"></category></entry><entry><title>Towards Forester 5.0 II: a design for canonical URLs</title><link href="https://www.forester-notes.org/JVIT/" rel="alternate"></link><published>2025-03-25T13:44:56Z</published><updated>2025-03-25T13:44:56Z</updated><author><name>JonS</name></author><id>https://www.forester-notes.org/JVIT/</id><summary type="html"><p>One of the goals of <a href="https://www.forester-notes.org/jms-011P/">Forester 5.0</a> is <em>lightweight federation</em>—the ability to have two forests participate in the same graph and therefore provide backlinks, etc. In a previous post (<a href="https://www.forester-notes.org/OYOJ/">Towards <a href="https://www.forester-notes.org/jms-011P/">Forester 5.0</a>: a design for global identity</a>), I talked about some of the difficulties that arise when dealing with identities of people and references that have global scope but could nonetheless be described by trees in many forests. I proposed that such things should be addressed by canonical URIs (e.g. DIDs, DOIs, etc.) and that Forester should grow the ability to bind a canonical URI to multiple trees, which are then gathered into a disambiguation page.</p><p>Today I want to broaden the discussion to cover the difficulties of addressing trees themselves (as opposed to the global entities they may describe). This is a proposal and I welcome feedback.</p>···<p>Forester does not currently support any kind of access control, but this is indeed an important area that we are considering carefully in order to enable institutional use of Forester, and ease the burden of collaboration in the usual case of a forest that contains a mixture of data with varying levels of confidentiality. I believe that the current design is compatible with essentially any approach to access control that we might adopt, but I am interested in feedback to the contrary.</p>+</section></summary><category term="Forester Blog"></category></entry><entry><title>Topological Sort of Packages</title><link href="https://www.tunbury.org/topological-sort/" rel="alternate"></link><published>2025-03-25T00:00:00Z</published><updated>2025-03-25T00:00:00Z</updated><author><name>MarkE</name></author><id>https://www.tunbury.org/topological-sort</id><summary type="html"><p>Given a list of packages and their dependencies, what order should those packages be installed in?</p><p>The above graph gives a simple example of the dependencies of the package <code class="language-plaintext highlighter-rouge">dune</code> nicely ordered right to left.</p>···<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># topological_sort dune;;+</code></pre></div></div></summary><category term="Tunbury.ORG"></category></entry><entry><title>Weeknotes: 24th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-24/" rel="alternate"></link><published>2025-03-24T09:07:12Z</published><updated>2025-03-24T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-24/</id><summary type="html"><h1>Last week</h1><p>I spent most of the week with a head-cold or such (I'm not the right kind of doctor to figure that out), and so productivity was a little low.</p><p>Two major steps forward on my implementation of the IUCN's <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR metric</a> this week.</p>···<li>Although it's for a video game, the article could just as easily apply to those trying to visualise geospatial datasets. Yes, the specific tooling around the source data will be different, but the questions Nick has to ask along the way will be the same.</li><li>The introduced me to the term &quot;polydisciplinary&quot;, which I think is a nice description for a lot of what I do - both currently and just looking back generally over my career. It's rare that I get to be the person with the deep detail knowledge of a thing,, but rather my skill seems to be picking up enough from the fields I'm trying to tie together (aided of course by those who do know more than me) and getting some combined result the individual experts alone wouldn't been able to produce.</li>+</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 24 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-24.html" rel="alternate"></link><published>2025-03-24T00:00:00Z</published><updated>2025-03-24T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-03-24.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>2025-03-23 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/23/weekly-notes.html" rel="alternate"></link><published>2025-03-23T00:00:00Z</published><updated>2025-03-23T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/03/23/weekly-notes</id><summary type="html"><p>After the issues and errors with generating the tree data for all of England, I realised that one of the best ways to proof-check the data was to visualize it and more importantly, to let others see it so they can check things that I might be missing. Because of this, I spent a good chunck of time trying to create a web map of all the trees in London. I used CARTO to do it but it wasn’t straightforward, mostly because of the size of the data. My files were stored in parquet format which apparently CARTO nor Mapbox are capable of transforming automatically to web Mercator, so I had to change the CRS in Sedona and re-generate the parquet partitions. Unfortunately, knowing where each partition is pointed at is not very easy, so what I did was geo-reference using the UK National Grid and then generate the partitions. The result is the map below where all the trees are shown with radius meaning the crown area and the colour the height. I want to improve it because at the moment the layers represent the partitions of the parquet files, but I know you can store the files in BigQuery or S3 and then use CARTO to visualize them (anyone willing to help, I’ll buy a beer and if the weather is good, an ice cream). Nonetheless, I will try that after the paper is done. Speaking of, I realised that I didn’t want to just present correlations between the tree data, remote sensing metrics and deprivation. That seems only descriptive statistics, but following the advice of <a href="https://anil.recoil.org/">Anil</a> from previous meetings, I’ve also worked on a metric that combines all of the variables into one. My original idea was to represent environmental deprivation, as the IMD does, but my variables don’t measure that intrinsecally, they just present where more nature is “available”, so I guess it will be more of a nature availability index. It relies on green and blue infrastructure and it is built on the weights from the first two components of a PCA for the entire country. The cool thing is that it can actually tell which geographic areas are urban or rural and you can see the deprivation pattern in the data. However, the logic behind them is just additive, as in it’s just following the form $y = a_1x_1 + … + a_ix_i$, where each $x$ is the “nature metric” for a given geographical area, and each coefficient $a$ is associated with said metric. This would be a-dimensional as variables were normalised. Then, after this I would build a Gini Coefficient of green disparity per Local Authority (this could be done at greater geographic scales such as region). This is based on this <a href="https://www.sciencedirect.com/science/article/pii/S0169204624002305#s0025">paper</a>, but also comments made by <a href="https://www.sustainabledesign.arct.cam.ac.uk/">Ronita</a> on how to represent my metrics, as the Gini Coefficient is widely used in economics when talking about wealth inequality.</p>+<p>Finally, on a lighter note, Saturday morning after a good tennis session, I went to the Computer Lab to attend a workshop on <a href="https://sonic-pi.net/">Sonic Pi by its creator Sam Aaron</a>, as part of the Cambridge Festival. It turned out, the attendants were just as old as the first movie in the Star Wars Sequel Trilogy (The Force Awakens in 2015). 😅 However, I ended up enjoying other activities during the festival, namely the Insomia AI project and the earphones that uses AI to monitor your heart rate. More importantly, expect my appearance in the CST social media channels as I answer questions on super computers, asked by none other than my dear friend and fellow PhD student <a href="https://www.onkargulati.com/">Onkar Gulati</a>.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>LIFE becomes an Official Statistic of the UK government</title><link href="https://anil.recoil.org/notes/life-official-statistic" rel="alternate"></link><published>2025-03-21T00:00:00Z</published><updated>2025-03-21T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/life-official-statistic</id><summary type="html"><p>Our <a href="https://anil.recoil.org/papers/2024-life">recently published</a> <a href="https://anil.recoil.org/projects/life">LIFE</a> biodiversity metric has just been integrated into a newly recognised <a href="https://defraenvironment.blog.gov.uk/2025/01/20/newly-recognised-official-statistic-tracks-the-environmental-impact-of-our-consumption/">Official Statistic from the UK government</a>! This integrates the core LIFE biodiversity metric with <a href="https://anil.recoil.org/papers/2024-food-life">food provenance data</a> to track the environmental impacts of our consumption habits.</p><p>I must admit that I'd not heard of &quot;Official Statistics&quot; before this, so I did a bit of research. The UK <a href="https://osr.statisticsauthority.gov.uk/">Office for Statistics Regulation</a> says that:</p><p>Official statistics are statistics produced by Crown bodies and other organisations listed within an Official Statistics Order, on behalf of the UK government or devolved administrations.···<p><a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball">Thomas Ball</a> and <a class="contact" href="https://www.york.ac.uk/sei/staff/jonathan-green/">Jonathan Green</a> then worked directly with the policy team at the JNCC to further customise the metric for GEIC needs, and the aggregate result of that is what's actually used in the dashboard.</p><p>There's quite a long gap between the original observations and the resulting policy use, with many humans in the loop in between. Computational systems need to capture all this nuance rather than viewing these metrics as &quot;just&quot; dataflow pipelines. However, it's equally important to capture the policy customisations in some sort of code, so that we can reliably issue annual updates. Figuring this pipeline out is part of what we're working on in the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project at present. See below for a <a href="https://anil.recoil.org/videos/d592bf17-c835-435f-9469-f0f65e926975">recent talk</a> I gave on the functional programming aspects of this problem at LambdaDays.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 17th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-17/" rel="alternate"></link><published>2025-03-17T09:07:12Z</published><updated>2025-03-17T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-17/</id><summary type="html"><h1>Förrförra vecka</h1><p>As the outputs of the LIFE project we generate two maps: one showing the impact on extinction risk of converting land to farmland (aka the arable scenario), and another showing the risk of converting human changed land back to predicted its natural state (aka the restore scenario). Those maps though are data maps, containing fractional values in each pixel, so aren't something you can see, so instead when presenting the work I tend to lead with a &quot;pop-science&quot; version generated by <a href="https://qgis.org">QGIS</a> when you load the maps. Here you can see the map for the arable scenario, showing that putting a farm in a tropical forest is a sub-optimal idea:</p>···<li>I had an idea for some work that might take advantage of what Frank has been working on with foundational models, so I need to get him some data for that so we can do an initial test of that idea.</li><li><a href="https://www.outreachy.org">Outreachy</a> has started, so I'll be helping candidates for that find things to work on as I'm running one of the projects there.</li>+</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 17 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-17.html" rel="alternate"></link><published>2025-03-17T00:00:00Z</published><updated>2025-03-17T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-03-17.html</id><summary type="html"><article>···<h3 id="spatial-name-system"><span class="done DONE">DONE</span> <a href="sns.html">Spatial Name System</a></h3><h3 id="eon"><span class="done DONE">DONE</span> <a href="eon.html">Eon</a></h3>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>2025-03-16 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/16/weekly-notes.html" rel="alternate"></link><published>2025-03-16T00:00:00Z</published><updated>2025-03-16T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/03/16/weekly-notes</id><summary type="html"><p>Most of my week was devoted to debugging my code to count the number of trees per geographical area. As mentioned in previous posts, I’ve been using Apache Sedona to process all my vector files, which has reduced the computation time significantly, particularly for spatial joins around all buildings in England. However, I realised that I hadn’t actually counted how many trees there are in total, which sounds trivial, but it turned out to be not as easy with the code that I had. So it turns out that when you are doing a Spatial Join with an Spatial RDD, you are only expected to pass two columns, the identifier and geometry for each row. This is not present in the docs, but I found it by accident while converting from Spark DataFrames to RDDs. Also, due to the number of trees (in the hundreds of millions range for England. Urban Cambridge apparently has ~66K 😉), I had to increase the memory requirements of the Sedona config but then it didn’t run, so what I ended up doing was iteratating over each Local Authority and querying the trees for that area, while counting the number of trees in each LSOA (Local Authorities are made by many LSOAs). This takes about 2 hours to run but was the best solution I found to overcome the Spark errors. Also, I realised that for ~300 LSOAs, I wasn’t getting any trees but it’s because their raster files, even though read by Rasterio, are corrupted due to inlavid values. It was very tricky to find the solution to this but a simple call to the object’s values can be caught by the <code class="language-plaintext highlighter-rouge">try/except</code> clause so that solved it for now. The good news is that all of these corrections are done and now I (hope to) finally have a clean and complete dataset for analysis which will be my main goal for this week, so I can complete the results and discussion of this paper. And right on time because it´s the end of the term so my focus will be this on for the start of the Easter break. Speaking of, at some point in the next weeks I will write an in-depth blog about working with Sedona after the paper is done, because I feel that a lot of people (academics in particular) would benefit from it since the tool is in its early adoption phase in the industry, while very few academics use it in their workflow.</p><p>On a side note, my supervisions for the academic year finished last week. I was teaching the Maths and Programming course for the new design tripos in the Department of Architecture. It was a very nurturing experience that allowed me to teach in the Cambridge system, which is very unique, but also gave me the chance to re-learn some of the mathematical concepts, notably linear algebra and differential calculus that are behind ML algorithms. I had learned those more than 10 years ago when I was in Uni, and I was surprised of how rusty I was with my math. Related to this, I just started reading <a href="https://www.penguin.co.uk/books/446849/why-machines-learn-by-ananthaswamy-anil/9780241586488">Why Machines Learn</a> by Anil Ananthaswamy, for a more in-depth refresher on Maths. Will come back to this with my comments once I finish it.+Finally, I successfully finished the intermediate 1 French course (sort of B1), which means that I can say <em>Je ne sais pas</em> when I don’t understand why my code behaves in a unexpected way. 🤣</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>A fully AI-generated paper just passed peer review; notes from our evidence synthesis workshop</title><link href="https://anil.recoil.org/notes/ai-for-evidence-synthesis-workshop" rel="alternate"></link><published>2025-03-12T00:00:00Z</published><updated>2025-03-12T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ai-for-evidence-synthesis-workshop</id><summary type="html"><p>Access to reliable and timely scientific evidence is utterly vital for the practise of responsible policymaking, especially with all the turmoil in the world these days. At the same time, the evidence base on which use to make these decisions is rapidly morphing under our feet; the <a href="https://sakana.ai/ai-scientist-first-publication/">first entirely AI-generated paper passed peer review</a> at an ICLR workshop today. We held a workshop on this topic of AI and evidence synthesis at <a href="https://pem.cam.ac.uk">Pembroke College</a> last week, to understand both the opportunities for the use of AI here, the <a href="https://anil.recoil.org/papers/2024-ce-llm">strengths and limitations</a> of current tools, areas of progress and also just to chat with policymakers from <a href="https://www.gov.uk/government/organisations/department-for-science-innovation-and-technology">DSIT</a> and thinktanks about how to approach this rapidly moving area.</p><p><em>(The following notes are adapted from jottings from <a class="contact" href="https://www.cst.cam.ac.uk/people/jkm40">Jessica Montgomery</a>,<a class="contact" href="https://samreynolds.org/">Sam Reynolds</a>, <a class="contact" href="https://ai.cam.ac.uk/people/annabelle-scott">Annabelle Scott</a> and myself. They are not at all complete, but hopefully useful!)</em></p><p>We invited a range of participants to the workshop and held it at Pembroke College (the choice of the centuries-old location felt appropriate).···<p>Thanks <a class="contact" href="https://ai.cam.ac.uk/people/annabelle-scott">Annabelle Scott</a> for such a stellar organisation job and to Pembroke for hosting and all forattending, and please do continue the discussion about this <a href="https://www.linkedin.com/feed/update/urn:li:activity:7303431795587309569/">on LinkedIn</a>+if you are so inclined.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 10th March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-10/" rel="alternate"></link><published>2025-03-10T09:07:12Z</published><updated>2025-03-10T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-10/</id><summary type="html"><h1>Last week</h1><p>I've continued to do a little playing around with <a href="https://www.inaturalist.org">iNaturalist</a> data, both the range data and the occurrence data for birds. Birds, aka Aves, is a good one to pick as it's fairly well represented in both IUCN data (which I understand to have all known species of bird in it), and well covered in observations.</p><p>I read up on how the &quot;range&quot; maps that iNaturalist <a href="https://www.inaturalist.org/pages/range_maps">have started to share</a>, which they describe in <a href="https://www.inaturalist.org/posts/84677">this blog post</a>, and link to <a href="https://arxiv.org/abs/2306.02564">this paper</a> on the methods use. This describes how they use a neural network model to generate the data, and how it differs from standard modelling approaches as they only have presence data and not absence data. <a href="https://anil.recoil.org">Anil</a> then pointed me at <a href="https://arxiv.org/abs/2502.14977">a newer paper</a> by the same group that looks specifically at trying to model species with very few occurrence points using machine learning techniques.</p>···<p>A couple of weeks ago we looked at doing a version of LIFE that used more detailed information for specific countries, and I have to do some preliminary looking at data for that to see how it'll work.</p>+</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 10 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-10.html" rel="alternate"></link><published>2025-03-10T00:00:00Z</published><updated>2025-03-10T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-03-10.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>2025-03-09 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/03/09/weekly-notes.html" rel="alternate"></link><published>2025-03-09T00:00:00Z</published><updated>2025-03-09T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/03/09/weekly-notes</id><summary type="html"><p>Hello! This week I worked on the optimisation of counting trees within a given geometry. This is a problem I had solved back in December, although not in the optimal way. Ihad segmented almost 400M trees from the Defra dataset, but now I had to count how many are within a 100 m radius of each one of the 29M buildings in England. I had solved this by iterating through the LSOAs (statistical geography) in England, but that process took about 11 days to complete with the SQl API of Apache Sedona. When I was developing that part of my project, I had tried to solve it using Spatial RDDs, as suggested by <a href="https://ameliaholcomb.github.io/">Amelia Holcomb</a> initially, but sadly, the documentation of some of the features in Sedona are still in developing stages so I put that away. Because I had created an improved version of the trees layers, I had to repeat the estimation, but I couldn’t wait 11 more days, even though I had that code running, so I decided to go back to the Spatial RDDs. However, I had one big problem, the tree segmentation, which already takes a couple of hours, outputs a geopackage, and Apache Sedona, or at least the RDD API, is not functional with this type of vector data, so I had to transform that to a geoparquet. To do so, I found an optimal way to group tree tiles using the <a href="https://digimap.edina.ac.uk/help/our-maps-and-data/bng/">UK National Grid system</a>, which divides the country into equally-sized squares of 1, 5, 10, 25, 50, 100 km. I used the 50 km size to group the tree tiles, and then optimised my existing code to add RDD capabilities, that I hadn’t been able to do a couple of months ago. One difference now, is that instead of using the tree polygon I am using the centroid and treating the tree as a point, as that simplifies <em>Within</em> spatial joins. This change took me a while to implement but I could finish the calculation in 12 hours instead of 11 days. I’m pretty sure it is possible to optimise even more but it’s good enough for now.</p><p>In addition to this, I also modified the calculation of spectral indexes from Sentinel-2 images to get the max value of NDVI per month and extract the median for a year and then compare between 2024 and 2016 as a measure of change in water, vegetation and built-up surfaces. By implementing all these changes and also because Ronita asked me to produce some figures, I accidentally found a way to scrape a Web Map Service and get tiles at the native highest resolution. I did a mini example trying to scrape the aerial images from Digimap and compare them to what I had used in my Masters project and it works. The only caveat is that they come with a label at the bottom of the image and they are not georeferenced, but this is not necessary for deep learning processing, also because how I’ve scraped them is using the national grid, so I know the coordinates I am requesting and can georeference after processing. Check the mini map I’ve included in the notes displaying how the statistical geographies (local authorities) overlap with the national grid, which is how most data is divided, such as the Vegetation Object Model or Aerial and LiDAR images.</p>···<p>I applied to the turing enrichment scheme hoping I get a place there starting from the next academic year and I also applied for the <a href="https://eslab.ai/">Earth System Lab</a> program for the coming summer.</p>+<p>On a side note, this last weekend was the best weather in months in Cambridge and I feel it deserves a shouout in the notes. I also got a new bike to replace my old mountain bike, that I’ve had for two years (for those reading in the future: you don’t need a mountain bike in Cambridge, look at a map 😉!!).</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Towards Forester 5.0: a design for global identity</title><link href="https://www.forester-notes.org/OYOJ/" rel="alternate"></link><published>2025-03-08T12:17:14Z</published><updated>2025-03-08T12:17:14Z</updated><author><name>JonS</name></author><id>https://www.forester-notes.org/OYOJ/</id><summary type="html"><p>As we move closer to <a href="https://www.forester-notes.org/jms-011P/">Forester 5.0</a>, which <a href="https://www.forester-notes.org/30FN/">introduces</a> rudimentary federation capabilities, we must address new problems that did not arise in the days when no two <a href="https://www.forester-notes.org/tfmt-000R/">forests</a> interacted or linked to each other. The most immediate issue is that trees describing entities with “global” identity (including actual people as well as bibliographic references) will naturally be duplicated across many forests. For example, this happens when one person authors trees in multiple forests, and it happens even more often with bibliographic entries (both for the entries themselves and their author attributions). It is very important to handle this problem properly <em>now</em> in a way that (1) minimises friction and (2) enables us to quietly evolve toward <a href="https://www.forester-notes.org/klepmann-et-al-atproto-2024/">more Web-centric approaches to identity as they emerge</a>.</p><p>Below, I survey some existing approaches to identity that we would hope to be compatible with at some level. If you want to skip to my concrete proposal, see <a href="https://www.forester-notes.org/OYOR/">§ OYOR/</a>.</p>···<p>I am hoping to hear other people’s thoughts on this proposal, including any constructive criticisms or suggestions for how we might go about implementing it. You can write to me or the <a href="mailto:~jonsterling/forester-discuss@lists.sr.ht">mailing list</a> with your feedback.</p>+</section></summary><category term="Forester Blog"></category></entry><entry><title>Socially self-hosting source code with Tangled on Bluesky</title><link href="https://anil.recoil.org/notes/disentangling-git-with-bluesky" rel="alternate"></link><published>2025-03-08T00:00:00Z</published><updated>2025-03-08T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/disentangling-git-with-bluesky</id><summary type="html"><p>I've been an avid user of <a href="https://github.com">GitHub</a> since its launch, and it really has revolutionised how communities come together to work on open source. In recent years though, I find myself utterly overwhelmed by its notifications and want to experiment with <a href="https://www.offlineimap.org/github/2016/03/08/github-pr-suck.html">alternative workflows</a>. This experimentation also has a more serious undertone due to the increasing need for <a href="https://www.boell.de/en/2025/01/24/trump-and-big-tech-europes-sovereignty-stake">data sovereignty</a> and so I'm starting to move my source code to self-hosted solutions that are less reliant on centralised services.</p><p>This has also come up persistently over the years in the <a href="https://ocaml.org">OCaml</a> community, with questions over why participation in packaging <a href="https://discuss.ocaml.org/t/publishing-without-github/3232">requires a GitHub account</a> ever since the <a href="https://anil.recoil.org/notes/opam-1-1-beta">early days</a> of opam. I've never found a good answer... until now, with the launch of an exciting <a href="https://tangled.sh">new service</a> that's built over the same protocol that <a href="https://bsky.app">Bluesky</a> uses.As I <a href="https://anil.recoil.org/notes/atproto-for-fun-and-blogging">noted</a> a few weeks ago, the <a href="https://atproto.com/">ATProto</a> can be used for more than just microblogging. It can also be an <em>identity</em> layer, across which other applications can be built which reuse the social fabric from Bluesky accounts.</p><p>&quot;<a href="https://tangled.sh">Tangled</a>&quot; is a new service launched (just yesterday!) by <a href="https://tangled.sh/@oppili.bsky.social">@opilli</a> and <a href="https://tangled.sh/@icyphox.sh">@icyphox</a> to manage Git repositories. I'm having a lot of fun trying it out, even in its early alpha stages! The coolest thing about Tangled is that you can self-host your own <a href="https://blog.tangled.sh/intro">knots</a>, which control where the source code repositories are actually stored.</p>···<p>If you'd like to try this out, then the <a href="https://tangled.sh/@anil.recoil.org/knot-docker/">Knot Docker</a> repository welcomes your issues!</p><p>Many thanks to Zicklag and icyphox on <a href="https://web.libera.chat/#tangled">tangled IRC</a> for helping me out with debugging the Knot setup and <a href="https://tangled.sh/@tangled.sh/core/commit/477da124ad0bdeeab5b621b81999683256ab7a4b">fixing bugs in real-time</a>. 12th Mar 2025: updated with <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a> comments.</p>+</small></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Our EEG group discussion on 'useful' AI tools</title><link href="https://anil.recoil.org/notes/the-state-of-ai-tools" rel="alternate"></link><published>2025-03-07T00:00:00Z</published><updated>2025-03-07T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/the-state-of-ai-tools</id><summary type="html"><p><a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> organised this week's <a href="https://www.cst.cam.ac.uk/research/eeg">EEG</a> group <a href="https://www.cst.cam.ac.uk/seminars/list/229027">discussion</a> on what AI tools we use for our daily work. I was immediately struck by how <em>few</em> tools there are that are actually making us more productive, so I jotted down notes as the discussion was going on.</p><li>Personally, the only tool I've found that's (only just recently) making me more productive is agentic coding, which I <a href="https://anil.recoil.org/notes/claude-copilot-sandbox">wrote about a few days ago</a>. Since then, I've been mildly obsessively forking off ideas I've wanted to try for years (like converting RFCs to OCaml code) and greatly enjoying myself. <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> and I have been looking for how to do this more ethically, and the best I ran across was the <a href="https://www.ibm.com/impact/ai-ethics">IBM AI ethics</a> guidance and their <a href="https://github.com/ibm-granite/granite-code-models">granite models</a>, but not much else. Any pointers to other models that don't violate open source licensing norms would be gratefully accepted; I'm using Claude 3.7 here, but don't feel great doing so!</li><li><a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> described his use of <a href="https://fathom.video/">Fathom</a> for note-taking, and (having been on the receiving end) can confirm it does a very good transcription job.</li>···<li>And for something completely different, another team released their <a href="https://google-research.github.io/self-organising-systems/difflogic-ca/">Differentiable Logic Cellular Automata</a> paper which describes how to go from the <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a> to full pattern generation using learned recurrent circuits. This one should really be read in its entirity to appreciate how incredible it might become in the future, as it would allow us to generate distributed systems that can build a very complex end-goal pattern by following a set of simple rules. <a class="contact" href="https://coomeslab.org">David A Coomes</a> pointed out to me recently that the question of <a href="https://www.wired.com/story/mystery-solved-how-plant-cells-know-when-to-stop-growing/">why cells stop growing</a> has only very recently been understood in traditional biology, and yet here we are applying ML to the case.</li><li><a href="https://mistral.ai/fr/news/mistral-ocr">Mistral OCR</a> came out today and seems to be the state of the art in multi-modally breaking down documents into a consistent linear structure. Their results show that they can break down complex PDFs in multiple languages into seemingly clean HTML with semantic structure (such as tables, equations, figures and so on). I've only just finished running <a href="https://anil.recoil.org/projects/ce">millions of papers</a> through <a href="https://grobid.readthedocs.io/en/latest/">Grobid</a>, so this is next on the queue to try out...</li>+<p>So, I guess the TL;DR of our discussion was that current AI tools are the first generation, but we're heading rather rapidly into new frontiers of discovery, so there's only going to be more of them coming up...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Are you still using OCaml 4.08 or earlier? If so, we need to know</title><link href="https://anil.recoil.org/notes/deprecating-ocaml-408" rel="alternate"></link><published>2025-03-05T00:00:00Z</published><updated>2025-03-05T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/deprecating-ocaml-408</id><summary type="html"><p>I started pushing OCaml Docker images over to the <a href="https://hub.docker.com/r/ocaml/opam">Docker Hub</a> in around 2017, to support the burgeoning automated build infrastructure around the use of the language. Back then, OCaml 4.06 was the latest release, and so I wrote an <a href="https://github.com/ocurrent/ocaml-version/blob/master/CHANGES.md">ocaml-version</a> library to track the release metadata. It has been a bit of a success disaster, as that library now <a href="https://github.com/ocurrent/ocaml-version/blob/master/CHANGES.md">tracks</a> every release of OCaml in the modern era, and also backs the <a href="https://github.com/ocurrent/docker-base-images">automatic building</a> of a huge array of compiler versions and variants across <a href="https://images.ci.ocaml.org/?distro=debian-12&amp;">Linux</a> and <a href="https://images.ci.ocaml.org/?distro=windows-msvc&amp;">Windows</a>.</p><p>The problem is...we're now building the full set of images from OCaml 4.02 onwards through to the latest OCaml 5.3.0 release, which is unsustainable for obvious reasons; despite the hosting being kindly <a href="https://www.docker.com/community/open-source/application/">sponsored by Docker</a>, we must also consider the <a href="https://ocaml.org/policies/carbon-footprint">carbon footprint</a> of our infrastructure.So the question for the OCaml community: <strong>are there are any remaining users who still need images earlier than OCaml 4.08 or can we can stop pushing those now?</strong></p><p><a class="contact" href="https://github.com/hannesm">Hannes Mehnert</a> lead an effort to deprecate compilers earlier than 4.08 <a href="https://discuss.ocaml.org/t/opam-repository-archival-phase-2-ocaml-4-08-is-the-lower-bound/15965">in the opam-repo</a>, and now <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> is asking the same question <a href="https://discuss.ocaml.org/t/docker-base-images-and-ocaml-ci-support-for-ocaml-4-08/16229">on the OCaml discussion forum</a> about the Docker image infrastructure. The latter lags the opam repository since there still may be operational usecases of industrial users who depend on older compilers, even if they don't use the latest package repository. So if you <em>are</em> using a really old OCaml and depend on our infrastructure, we'd appreciate you chiming in on the <a href="https://discuss.ocaml.org/t/docker-base-images-and-ocaml-ci-support-for-ocaml-4-08/16229">forum thread</a> or just contact <a class="contact" href="https://tarides.com/blog/author/mark-elvers/">Mark Elvers</a> or myself directly to let us know.</p>+<p>On another note, it's also quite difficult on the central <a href="https://hub.docker.com/">Docker Hub</a> to get statistics per-tag as to how many people are using each image. Does anyone have any recommendations on whether we should deploy our own &quot;proxy registry&quot; before pushing through to the central Docker Hub, or alternative open source registries to run our own?</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 3rd March 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-03-03/" rel="alternate"></link><published>2025-03-03T09:07:12Z</published><updated>2025-03-03T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-03-03/</id><summary type="html"><h1>Last week</h1><p>As indicated <a href="/weeknotes/2025-02-24/">last week</a>, I spent some time learning how to use both <a href="https://go.dev">Go</a> for <a href="https://webassembly.github.io/spec/core/index.html">Web Assembly</a> and with <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers">Web Workers</a> for parallelism in the browser. I <a href="/blog/go-wasm-workers/">wrote a long post</a> about the details if that's of any interest.</p>···<p>I happened across <a href="https://parsl-project.org">Parsl</a>, which isn't a parser, but a Python parallelism library. I've not tried it yet, but obviously it's relevant to the kind of thing I work on, so I should.</p>+</ul></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 3 Mar 2025</title><link href="https://ryan.freumh.org/2025-03-03.html" rel="alternate"></link><published>2025-03-03T00:00:00Z</published><updated>2025-03-03T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-03-03.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Oh my Claude, we need agentic copilot sandboxing right now</title><link href="https://anil.recoil.org/notes/claude-copilot-sandbox" rel="alternate"></link><published>2025-03-02T00:00:00Z</published><updated>2025-03-02T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/claude-copilot-sandbox</id><summary type="html"><p><a class="contact" href="https://github.com/yminsky">Yaron Minsky</a> nerdsniped me last week into getting OCaml to drive the 80s-retro <a href="https://www.adafruit.com/product/2345">RGB Matrix</a> displays. I grabbed one from the local Pi Store and soldered it together with help from <a class="contact" href="https://mynameismwd.org">Michael Dales</a>. But instead of writing OCaml bindings by hand, we thought we'd try out the latest agentic CLI called <a href="https://github.com/kodu-ai/claude-code">Claude Code</a> released <a href="https://ai-claude.net/">last week</a> to see if we could entirely autogenerate the bindings.</p><p><em>TL;DR:</em> Claude Coder generated working OCaml code almost from scratch, ranging from C bindings to high-level OCaml interface files and even Cmdliner terms, but needs a more sophisticated sandboxing model before something goes horribly wrong. So much potential and so much danger awaits us. Coincidentally <a class="contact" href="https://web.eecs.umich.edu/~comar/">Cyrus Omar</a> and <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> and I <a href="https://anil.recoil.org/papers/2024-hope-bastion">wrote</a> about this a few months ago. Read on...</p>···<p>Once you have this specification, then it's a matter of implementing fine-grained OS-level sandboxing policies to interpret and enforce them. Spoiler: we're working on such a system, so I'll write about that just as soon as it's more self-hosting; this area is moving incredibly fast.</p><p>Thanks to <a class="contact" href="https://mynameismwd.org">Michael Dales</a> for help soldering. For the curious, here's the <a href="https://github.com/yminsky/rpi-rgb-led-matrix/pull/3">PR with the code</a>, but it shouldn't go anywhere near any real use until we've had a chance to review the bindings carefully. There needs to be a new, even more buyer-beware no-warranty license for AI generated code!</p>+</small></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A hardware description language using OCaml effects</title><link href="https://anil.recoil.org/ideas/tracing-hdl-with-effects" rel="alternate"></link><published>2025-03-01T00:00:00Z</published><updated>2025-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/tracing-hdl-with-effects</id><summary type="html"><h1>A hardware description language using OCaml effects</h1><p>This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://kcsrk.info">KC Sivaramakrishnan</a> and <a class="contact" href="https://github.com/andrewray">Andy Ray</a>.</p>the problem domain. OCaml has the <a href="https://anil.recoil.org/notes/fpgas-hardcaml">HardCaml ecosystem</a> to···<a href="https://anil.recoil.org/ideas/computational-storage-for-vector-dbs">usecases</a> for using heterogenous hardware like FPGAs these days.There's a great <a href="https://signalsandthreads.com/programmable-hardware/">Signals and Threads episode</a> on+programmable hardware with <a class="contact" href="https://github.com/andrewray">Andy Ray</a> that should give you more useful background knowledge as well.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>2025-02-28 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/02/28/weekly-notes.html" rel="alternate"></link><published>2025-02-28T00:00:00Z</published><updated>2025-02-28T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/02/28/weekly-notes</id><summary type="html"><p>This week I focused mostly on checking why I had some empty rows in the estimation of the canopy cover and the tree count from the Vegetation Object Model. After investigating the code, I found that the issue was behind a try/except clause that was masking corrupted files. Now, this was the intended behaviour originally, as some files can’t be read, however, because the data processing is done at the geographic statistical level (read <a href="https://www.ons.gov.uk/census/census2021dictionary/areatypedefinitions">ONS</a>), and the VOM tiles come in 5x5 km files (following GB National Grid), even when one file can’t be read, the other ones wouldn’t be processed either. With the new small correction, only the corrupted files are not processed and the rest of the files are processed as intended. So from the 5402 tiles, only 26 can’t be read.</p><p>In addition to this, I wanted to reduce the over segmentation of trees from the VOM, because I was getting way more tree points than there actually are (at least visually), which leads to an overestimation of the number of trees. To do so, two changes were made thanks to chatGPT 🙃:</p>···<p>In other news, I got rejected from the IPCC Chapter Scientist application I sent a couple of weeks ago 😕, but I got a follow up email to fill in a form for a visitng student position in one of the big tech companies 🤓 for the summer, which doesn’t mean that I passed a filter round, it just means that they are collecting more info than there is in the CV.</p>+<p>Finally, I also attended a workshop organised by London Data Visualisation on how to make 3D maps in Blender. It was taught by <a href="https://www.julian-hoffmann-anton.com/">Julian Hoffman Anton</a> in the Canva HQ in London. It was pretty cool to see what you can do when you combine GIS data with Blender. I’m not sure if I will use it in the future, but it was a nice experience to see how you can make 3D maps with minimal coding and a lot of creativity. The picture below is my attempt at trying to visualize the tallest coastal mountain in the world (Sierra Nevada de Santa Marta) using Google imagery and open topography data.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>The AIETF arrives, and not a moment too soon</title><link href="https://anil.recoil.org/notes/ai-ietf-aiprefs" rel="alternate"></link><published>2025-02-28T00:00:00Z</published><updated>2025-02-28T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ai-ietf-aiprefs</id><summary type="html"><p>The <a href="https://ietf.org">IETF</a> <a href="https://bsky.app/profile/ietf.org/post/3lj6w5fpjx22u">announced</a> their new <a href="https://www.ietf.org/blog/aipref-wg/">AI Preferences Working Group</a> (AIPREF), which will <em>&quot;work on standardizing building blocks that allow for the expression of preferences about how content is collected and processed for Artificial Intelligence models&quot;</em>. This is quite well timed; the IETF tries not to standardise too early before there is <a href="https://www.ietf.org/runningcode/">running code</a> but also needs to move before it's too late and a bad defacto standard is <a href="https://datatracker.ietf.org/doc/html/rfc7282">chosen</a>. The AI world seems to be at that nexus point right about now, with <a href="https://openai.com/index/introducing-gpt-4-5/">GPT 4.5</a> seemingly hitting a <a href="https://www.newscientist.com/article/2470327-is-openai-hitting-a-wall-with-huge-and-expensive-gpt-4-5-model/">scaling wall</a> and possibly triggering the start of a renewed data scraping frenzy.</p><p>I've found when developing my own website there are a number of approaches to interacting with automated data crawlers. For the record, over 90% of the traffic to this site is from automated sources, so it's a material concern for <a href="https://anil.recoil.org/news?t=selfhosting">selfhosting</a> infrastructure.</p>···<p>Luckily, the IETF do a lot of things over email, so I've signed up to the <a href="https://mailman3.ietf.org/mailman3/lists/ai-control.ietf.org/">AIPREF mailing list</a> to learn more as it develops and hopefully participate!</p><p>Changelog. Mar 1st 2024: Thanks to <a class="contact" href="https://mynameismwd.org">Michael Dales</a> for spotting typos, and <a href="https://bsky.app/profile/aftnet.bsky.social">Antoine Fressancourt</a> for helpful clarifying questions on Bluesky.</p>+</small></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Blogging BIOSPACE25!</title><link href="http://localhost:4000/2025/02/28/biospace.html" rel="alternate"></link><published>2025-02-28T00:00:00Z</published><updated>2025-02-28T00:00:00Z</updated><author><name>OnkarG</name></author><id>http://localhost:4000/2025/02/28/biospace</id><summary type="html"><h1 id="blogging-biospace25">Blogging BIOSPACE25!</h1>···<img alt="" src="http://localhost:4000/images/posts/biospace/gandolfo.jpg" style="width: 600px; height: auto;" />+</p></summary><category term="Onkar Gulati"></category></entry><entry><title>Tue 25 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-25.html" rel="alternate"></link><published>2025-02-25T00:00:00Z</published><updated>2025-02-25T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-02-25.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using Go with Wasm and Web Workers</title><link href="https://digitalflapjack.com/blog/go-wasm-workers/" rel="alternate"></link><published>2025-02-24T15:08:58Z</published><updated>2025-02-24T15:08:58Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/go-wasm-workers/</id><summary type="html"><p>These are some notes for myself about trying to use Wasm and Web Workers to achieve some level of parallelisation in the browser. This isn't meant to be a comprehensive tutorial, but there are so many broken tutorials or half bits of documentation out there, I thought I should leave myself a note here. This is just the result of an afternoon of spelunking to try and work out how to do this, and should not be considered comprehensive.</p>···<p>I found myself shuddering slightly at this apparent return to <a href="https://en.wikipedia.org/wiki/Java_applet">Java applets</a> and <a href="https://en.wikipedia.org/wiki/ActiveX">ActiveX</a>. At least the security model is better thought out this time around it seems.</p>+<span><a class="fn-label" href="#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Digital Flapjack"></category></entry><entry><title>Weeknotes: 24th February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-24/" rel="alternate"></link><published>2025-02-24T09:07:12Z</published><updated>2025-02-24T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-24/</id><summary type="html"><h1>Last Week</h1><p>As started <a href="/weeknotes/2025-02-17/">last week</a>, I finished the changes to let you run the <a href="https://github.com/quantifyearth/life/">LIFE pipeline</a> using the bulk data downloads from the <a href="https://iucnredlist.org/">IUCN Red List</a> website, which give you a bunch of CSV files of species data and then some shapefiles of range data. Previously I'd been using a PostGIS database with all the data in, but not everyone has one of those to hand, and I want to make it was easy as possible for others to run the pipeline to reproduce our work.</p><p>After being very impressed last week at the behaviour of <a href="https://duckdb.org/">DuckDB</a>, particularly in the way it'd let me do spatial queries, I did realise that the performance of <code>ST_UNION_AGG</code>, it's version of PostGIS's <code>ST_UNION</code> was significantly slower than just pulling the different ranges for a species and using <a href="https://shapely.readthedocs.io/en/stable/manual.html">shapely</a> to unify them in Python. It's still a hugely useful tool, but normally I'm happy to let PostGIS do such unions, but for DuckDB I just need to be a bit more cautious.</p>···<p>We had a meeting this week about future LIFE metric work, and so I need to write up bits of that, as we did sensibly set a deadline for some progress updates in a month!</p>+<p>I still owe Simon Tarr a way to run the AoH pipeline via Docker that I said I'd do a few weeks ago, and I need to follow up with Chess on our differences in species filtering - though hopefully an easier thing to track with my new reporting output.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>2025-02-21 Weekly Notes</title><link href="https://ancazugo.github.io/research/outreach/2025/02/21/weekly-notes.html" rel="alternate"></link><published>2025-02-21T00:00:00Z</published><updated>2025-02-21T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/02/21/weekly-notes</id><summary type="html"><p>So back to the routine after coming from Italy for BIOSPACE25. It was a really great experience in the ESA HQ but I got a cold from Italy 😷.</p><p>This week started by going to the Social and Spatial Epidemiology Module from the <a href="https://www.phs.group.cam.ac.uk/">PHS MPhil</a> in the Biomedical Campus. It’s originally desgined to help public health students understand that it is a spatial domain, with all that it means. I really enjoyed the course in that I was exposed to things that I wasn’t aware of like redlining and gerrymandering in the US.</p>···<p>In other endeavors, I started working on the side project of building a digital twin for the university for which I’m going to use the proprietary software by Esri, since all the spatial infrastructure in the University is handled with ArcGIS. It’s a very exciting project with Ramit Debnath and Emily So and will write about it once everything is in a working stage.</p>+<p>Finally, I redveloped my interactive map of the 3-30-300 rule in England using the updated methodology. I used CARTO for this one and included a couple of widgets that allow the user to filter the map by local authorities or regions in England. It turns out that building these dashboards is more straightforward than I thought in this platform than it is in other platform (looking at you Esri). The power of visualizing the data and not the numbers is that you see patterns or mistakes in your data processing pipeline. Check the map <a href="https://pinea.app.carto.com/map/f4087ee0-7565-4902-bd8f-eb8fe30c0b37">here</a></p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>A trio of papers I read on biodiversity and forests this week</title><link href="https://anil.recoil.org/notes/forest-apps-and-benchmarks" rel="alternate"></link><published>2025-02-20T00:00:00Z</published><updated>2025-02-20T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/forest-apps-and-benchmarks</id><summary type="html"><p>This week I've been reading three really nice pieces of work by mycolleagues, in the form of a <a href="https://www.nature.com/articles/s44358-025-00022-3">review paper</a> on biodiversity and AI,a <a href="https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.14503">benchmark</a> for 3D forest reconstruction using laser scanners and a <a href="https://github.com/MingyueX/GreenLens">mobile app</a> for measuring the width of tree trunks. A real bonanza for forest lovers!</p>···-- <cite><a href="https://www.cst.cam.ac.uk/using-ai-see-wood-trees">Frank and Keshav on cam.ac.uk</a></cite></p><p><figure class="image-center"><img alt="I actually got quite distracted while trying to beta test GreenLens in India as I ran across these adorable stray street puppies, which seems important to post" class="content-image" src="https://anil.recoil.org/images/pups-india-1.webp" title="I actually got quite distracted while trying to beta test GreenLens in India as I ran across these adorable stray street puppies, which seems important to post" /><figcaption>I actually got quite distracted while trying to beta test GreenLens in India as I ran across these adorable stray street puppies, which seems important to post</figcaption></figure>+</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 17th February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-17/" rel="alternate"></link><published>2025-02-17T09:07:12Z</published><updated>2025-02-17T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-17/</id><summary type="html"><h1>Last Week</h1><p>For the <a href="https://github.com/quantifyearth/life/">LIFE extinction-risk metric pipeline</a>, all the species data comes from the <a href="https://www.iucnredlist.org/">IUCN Red List</a>, and this week I began a job I'd been intending to do for a while to make that stage pragmatically accessible to people trying to run our pipeline externally.</p><p>Originally, as LIFE was being developed, the species data was manually downloaded from the Red List website using their bulk download facility, which gives you a ZIP file of CSVs for the empirical data, and then another set of ZIPs that contain the polygon range data. These had then been run through a mixture of hand processing and Python scripting to filter it down to the appropriate species for the LIFE metric. As we came to publication I wanted to automate this, which I did, but at that stage, because I was working closely with the IUCN on implementing their <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR metric</a> in addition to the LIFE metric, which both start with the raw Red List data, I had all the information stored in a PostGIS database, and my code runs against that currently. The contents of the database is the same raw Red List data from the bulk downloads, but is just easier to work with rather than a bunch of different files in different formats to ingest.</p>···<p>We are starting up some new research threads around plants, and I have a bunch of meetings on this topic this week, so I'll need to switch my brain over to prep work for those meetings.</p>+<p>A lapsed-hacker can dream, right?</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Vpnkit, Void Processes, LSP Servers</title><link href="https://patrick.sirref.org/weekly-2025-02-17/" rel="alternate"></link><published>2025-02-17T00:00:00Z</published><updated>2025-02-17T00:00:00Z</updated><author><name>PatrickF</name></author><id>https://patrick.sirref.org/weekly-2025-02-17/</id><summary type="html"><p>Previous <a href="https://patrick.sirref.org/weeklies/">weeklies</a> used <strong>strong</strong> emphasis to distinguish sections. This comes from <a href="https://patrick.sirref.org/forester/">Forester</a>'s philosophy about atomicity of the content in your <em>forest</em>. </p><p>However, <em>subtrees</em> are supported! I quickly hacked together the ability to use <em>subheadings</em> to indicate <em>subtrees</em>. This is strictly less expressive than the <code>\subtree{}</code> of <a href="https://patrick.sirref.org/forester/">Forester</a>'s default syntax as we cannot <em>close</em> heading sections in Markdown. </p>···<p><a href="https://patrick.sirref.org/anilmadhavapeddy/">Anil</a> and I had a great conversation this week about building community especially as it pertains to open-source and OCaml. </p><p>I've been going back over <a href="https://patrick.sirref.org/ostrom-gtc/">Governing the Commons</a>, but have already discovered <a href="https://patrick.sirref.org/franklin-rwt/">The Real World of Technology</a>! </p>+</section></summary><category term="Weeklies"></category></entry><entry><title>Mon 17 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-17.html" rel="alternate"></link><published>2025-02-17T00:00:00Z</published><updated>2025-02-17T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-02-17.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Thoughts on the National Data Library and private research data</title><link href="https://anil.recoil.org/notes/uk-national-data-lib" rel="alternate"></link><published>2025-02-17T00:00:00Z</published><updated>2025-02-17T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/uk-national-data-lib</id><summary type="html"><p>Over the past year, <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and I have been getting an object lesson in how the modern Internet handles researcher access to data, as we've been downloading tens of millions of research papers towards our <a href="https://anil.recoil.org/projects/ce">Conservation Evidence</a> project. This is legally possible via our <a href="https://www.lib.cam.ac.uk/stories/student-guide-libraries">institutional subscriptions</a> that give us license to fulltexts, and the incredibly helpful <a href="https://uk.linkedin.com/in/james-caudwell-60681766">head of electronic services</a> at the University Library who wields encyclopedic knowledge of each of our agreements with the hundreds of publishers out there. My thoughts on this then segwayed into recent conversations I've been having about the emerging <a href="https://takes.jamesomalley.co.uk/p/wtf-is-the-national-data-library">National Data Library</a> and also with the UK <a href="https://www.wildlifetrusts.org/">Wildlife Trusts</a>...</p><p>In late 2023, once we got past the legal aspects of downloading closed access papers<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup> it was still remarkably difficult to <em>actually</em> gain access to the actual paper datasets themselves. For instance, a select few hurdles include:</p>···<p>This largely involved talking to individual publishers and agreeing not to directly train generative AI models and to keep them private to our own research use. Fairly reasonable stuff.</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>BIOSPACE25 Blog</title><link href="https://ancazugo.github.io/research/outreach/2025/02/14/biospace25-blog.html" rel="alternate"></link><published>2025-02-14T00:00:00Z</published><updated>2025-02-14T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/research/outreach/2025/02/14/biospace25-blog</id><summary type="html"><h2 id="day-2">Day 2</h2><h3 id="my-presentation-available-to-watch-here">My presentation (available to watch <a href="https://www.youtube.com/live/e-eQ8XhRrsE?si=lv0p4CV3kdKGxmTk&amp;t=14326">here</a>)</h3>···<li>Integrated Biologging Framework. Integrating magnetic data from EO with bird migration data</li><li>Funnily enough, I didn’t meet many Spanish speakers in the conference, but I ended up going to a bar after the conference with a group coming from the Adplfo Ibáñez University in Chile and a couple of other South Americans from different European institutions. I spoke with Laura Pérez-Giraldo, who works on using remote sensing in the Chilean Andes to understand plant diversity and pollination. There’s some possibility for collaboration in the future with the effect of trees on mental health in poor areas in Santiago.</li>+</ul></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>`nmcli` connection to internal WiFi</title><link href="https://mort.io/blog/internalcl-wifi/" rel="alternate"></link><published>2025-02-14T00:00:00Z</published><updated>2025-02-14T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/internalcl-wifi/</id><summary type="html"><p>Using my fancy (?) new(-ish) Linux laptop running <a href="https://nixos.org/">NixOS</a>, I···</span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">nmcli</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-keyword z-operator z-assignment z-redirection z-shell">&gt;</span> quit</span><p>Obviously you will need to provide your own values for <code>YOUR-IDENTITY</code> and+<code>YOUR-PASSWORD</code> :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Updated preprint on quantifying biodiversity cost of food consumption</title><link href="https://anil.recoil.org/news/2024-food-life-2" rel="alternate"></link><published>2025-02-12T00:00:00Z</published><updated>2025-02-12T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-food-life-2</id><summary type="html"><p>We've uploaded a revised preprint on our ongoing work on quantifying the <a href="https://anil.recoil.org/papers/2024-food-life">biodiversity cost of global food consumption</a>, lead by <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball">Thomas Ball</a>. This is based on the <a href="https://anil.recoil.org/news/2024-life-3">recently published</a> <a href="https://anil.recoil.org/projects/life">LIFE</a> metric, combined with supply chain data and provenance modeling. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-food-life-2">196 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-food-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 10th February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-10/" rel="alternate"></link><published>2025-02-10T09:07:12Z</published><updated>2025-02-10T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-10/</id><summary type="html"><h1>Last week</h1><p>I hand't planned this, but I spent a day reworking the <a href="https://github.com/quantifyearth/yirgacheffe/">Yigacheffe</a> APIs towards what I've always thought of as the next major version interface, and had filed under &quot;mañana&quot; due to other work being more important. But inspired by one of the part II projects I'm supervising (final year undergrad for those not from Cambridge), I decided I really needed to fix up the APIs to make them cleaner.</p><p>Yirgacheffe has some clunky parts to the API where it fails to meet the aim I have that working on maps should result in Python code that clearly follows the methodology rather than dealing with house keeping around the data. In a lot of areas I like to think I've been successful; for example, it will deal with loading in data in small chunks to as to fit within memory. But other parts expose the fact that the API didn't originally still required you to work with array data via simple operators, so you had to manually tell Yirgacheffe how to align the data you were using.</p>···+<p>After all the work described above, the main thing I want to do is tidy up a couple of the other rough API edges that are just down to poor naming rather than being particularly structural. If I can get those done, then I think a 1.0 party can occur in the next week or so.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Teaching, teaching, teaching...</title><link href="https://patrick.sirref.org/weekly-2025-02-10/" rel="alternate"></link><published>2025-02-10T00:00:00Z</published><updated>2025-02-10T00:00:00Z</updated><author><name>PatrickF</name></author><id>https://patrick.sirref.org/weekly-2025-02-10/</id><summary type="html"><p>On paper, I don't have that many students. I teach four undergraduates (first year students at Pembroke College) <a href="https://patrick.sirref.org/discrete-maths/">Discrete Maths</a>. I supervise three third year students for their <a href="https://patrick.sirref.org/part-ii-2024/">final year project </a> and another one I co-supervise with <a href="https://patrick.sirref.org/mdales/">Michael Dales </a>. However, I do end up spending at least two full days a week on teaching. Something I really enjoy and take seriously. The time it takes is also quite unpredictable; last week for instance all the third year students had their mid-project demonstrations (a five-minute presentation in front of their peers and a few professor-types). My first year students also found two slides particularly challenging to understand from their lectures and asked if I could help explain what was going on, so I <a href="https://patrick.sirref.org/dm-note.pdf">produced some materials for that </a>. </p>···<img alt="Woman in an Orchard (Spring Sunshine in the Meadow at Eragny)." src="pissarro.jpeg" width="400" /><figcaption>Woman in an Orchard (Spring Sunshine in the Meadow at Eragny)</figcaption>+</figure></summary><category term="Weeklies"></category></entry><entry><title>Mon 10 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-10.html" rel="alternate"></link><published>2025-02-10T00:00:00Z</published><updated>2025-02-10T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-02-10.html</id><summary type="html"><article>···<h3 id="write-up-research-ideas-for-website"><span class="todo TODO">TODO</span> write up research ideas for website</h3>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>The Cambridge "Green Blue" competition to reduce emissions</title><link href="https://anil.recoil.org/notes/cambridge-green-blue" rel="alternate"></link><published>2025-02-10T00:00:00Z</published><updated>2025-02-10T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/cambridge-green-blue</id><summary type="html"><p><a class="contact" href="https://mlg.eng.cam.ac.uk/carl/">Carl Edward Rasmussen</a> recently gave a great <a href="https://watch.eeg.cl.cam.ac.uk/w/qEsMt2Ayk37SaKgxrfwoBt">talk</a> in our group about his thoughts on <a href="https://mlg.eng.cam.ac.uk/carl/words/mechanisms.pdf">mechanisms against climate change</a>. He persuasively argued that the <a href="https://unfccc.int/process-and-meetings/the-paris-agreement">Paris Agreement</a> was doing more harm than good by giving the <em>illusion</em> of being a concrete agreement, but is in reality a huge distraction. Our actual <a href="https://ourworldindata.org/co2-emissions">emissions</a> have increased since the Paris agreement was signed!</p><p>Carl <a href="https://www.youtube.com/watch?v=naFaQsFxs1g">argues</a> that a climate system ultimately only responds to collective actions, and without a global cooperative incentive each nation will spring back to their own isolated short-term incentives that lead to an increase in fossil fuel burning. He has just published the &quot;<a href="https://mlg.eng.cam.ac.uk/carl/climate/themis0.pdf">Themis Mechanism</a>&quot; as a simple alternative for equitable global emission reduction (<a href="https://mlg.eng.cam.ac.uk/carl/climate/themis.pdf">long form</a>).</p><p>This got me brainstorming with Carl about how to test his theories out and we came up with an idea that is either terrible or awesome; please read on and judge appropriately. I think we should take advantage of Cambridge's unique structure to trial the Themis mechanism via a new <strong>competitive decarbonisation sporting league among Colleges that I dub the &quot;Cambridge Green Blue&quot;</strong>. Given the Chancellor's recent unveiling of an <a href="https://www.theguardian.com/business/2025/jan/28/reeves-plans-to-create-silicon-valley-between-oxford-and-cambridge">innovation corridor</a> between Oxford and Cambridge, the timing could not be better for an initiative like this. <em>(TL;DR sign up at the bottom of this post if you'd like to participate)</em></p>···<p>I promise I'm not a JMK shill, despite being a <a href="https://www.cshss.cam.ac.uk/research-info/j-m-keynes-fellowship-fund/j-m-keynes-fellows">JMK Fellow</a>.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-1"><p>The keen boardgame player will probably observe that there's always one player who decides to cause trouble just for fun, making everyone lose. This can be dealt with by social means.</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using AT Proto for more than just Bluesky posts</title><link href="https://anil.recoil.org/notes/atproto-for-fun-and-blogging" rel="alternate"></link><published>2025-02-09T00:00:00Z</published><updated>2025-02-09T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/atproto-for-fun-and-blogging</id><summary type="html"><p>While <a href="https://bsky.app">Bluesky</a> is taking off like a rocket, a number of us <a href="https://anil.recoil.org/notes/enter-the-matrix-hookshot">moving</a> towards <a href="https://anil.recoil.org/">self sovereign</a> digital infrastructure have been looking at how to use the Bluesky network for other uses than just short-form notes. This is possible because of my colleague <a class="contact" href="https://martin.kleppmann.com">Martin Kleppmann</a>'s hard work on the &quot;<a href="https://atproto.com/">AT Protocol</a>&quot; that underpins the Bluesky network. Martin recently gave us a <a href="https://talks.cam.ac.uk/talk/index/224767">deep-dive into the AT proto</a> in the Cambridge <a href="https://www.cl.cam.ac.uk/research/security/">security group</a>, which made me look into other uses of it more closely. As background, you may wish to read <a href="https://arxiv.org/abs/2402.03239">his paper</a> on the subject which explains the technical architecture extremely clearly.</p><p><a href="https://arxiv.org/pdf/2402.03239"> <figure class="image-center"><img alt="" class="content-image" src="https://anil.recoil.org/images/atproto-paper-ss-1.webp" title="" /><figcaption></figcaption></figure><p>One of the key problems this solves is one I'm having with using my <a href="https://en.wikipedia.org/wiki/ActivityPub">ActivityPub</a>-based services at the moment. Each of these services (like my <a href="https://crank.recoil.org">video</a> or <a href="https://amok.recoil.org">microblog</a> sites) do not share a common authentication system, and so each account is different. <a class="contact" href="https://nick.recoil.org">Nick Ludlam</a> and I are also thinking of renaming all of our services to go under the cleaner <code>recoil.org</code> domain rather than a subdomain, but this involves a fairly error-prone <a href="https://digitalflapjack.com/blog/hosting24/">migration</a> that lacks <a href="https://anil.recoil.org/ideas/activitypub-resilience">resilience</a> to domain change changes since they are baked into the ActivityPub protocol messages. The AT Protocol underpinning Bluesky deals with all these by decoupling the underlying authentication and identity system, and the content that's flowing over the network.</p>···<p>This is just the tip of the iceberg for the open web, of course. Excitingly, there are experiments ongoing to <a href="https://berjon.com/ap-at/?ref=cosmico.org">run ActivityPub over AT Proto</a> which describes how complementary these ecosystems are.And most excitingly from my personal perspective, is <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> successfully <a href="https://bsky.app/profile/patrick.sirref.org/post/3lh24rrjngw24">posting</a> from an up-and-coming <a href="https://github.com/patricoferris/ocaml-atproto-lexicon">OCaml ATProto</a> implementation. I'm looking forward to hacking in this ecosystem in 2025!</p>+<p><em>(Thanks David Gageot for spotting typos!)</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Sway</title><link href="https://ryan.freumh.org/sway.html" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/sway.html</id><summary type="html"><article>···in my configuration which you can find <a href="https://github.com/RyanGibb/nixos/tree/master/home/gui/wm">here</a>.</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Entering the Matrix with Hookshot</title><link href="https://anil.recoil.org/notes/enter-the-matrix-hookshot" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/enter-the-matrix-hookshot</id><summary type="html"><p>We've been happy users of <a href="https://matrix.org">Matrix</a> for our group communications in the <a href="https://www.cst.cam.ac.uk/research/eeg">EEG</a>. Today we've been bringing in more members of the wider group to using it instead of Slack. As part of that, I've set up a cool bot called <a href="https://github.com/matrix-org/matrix-hookshot">Hookshot</a> which allows Matrix to be connected to external services such as GitHub and Atom/RSS feeds. This is a test post to demonstrate to the members of the EEG how Matrix and Atom work!</p><p>The basic idea behind Hookshot is to provide a bridging service to communications rooms hosted on Matrix, in such a way that it can exert administrative control over a room to intercept requests for services (such as adding an Atom feed).</p><p>The setup for Hookshot can be a little involved as there are lots of encryption keys flying around. In a nutshell, I have a Docker container running it with a Yaml config of this nature:</p>···<p><figure class="image-center"><img alt="But it picked up my post! First!" class="content-image" src="https://anil.recoil.org/images/hookshot-ss-3.webp" title="But it picked up my post! First!" /><figcaption>But it picked up my post! First!</figcaption></figure>+<p>Hookshot supports a <a href="https://matrix-org.github.io/matrix-hookshot/latest/index.html">variety of other</a> services to bridge to as well, including <a href="https://matrix-org.github.io/matrix-hookshot/latest/setup/webhooks.html">webhooks</a> for arbitrary services. One of the most fun student projects I've supervised recently is &quot;<a href="https://anil.recoil.org/ideas/version-control-matrix">Decentralised Capability-based Code Collaboration using Matrix</a>&quot; in which <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a> built Git-patches-over-Matrix. If anyone wants to pick up on that and build a &quot;real&quot; version, perhaps we could use this for peer-to-peer coding! It might work really well with coding copilots, as they have a chat based interface anyway...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming FPGAs using OCaml</title><link href="https://anil.recoil.org/notes/fpgas-hardcaml" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/fpgas-hardcaml</id><summary type="html"><p>With the vast amount of data we have these days for our <a href="https://anil.recoil.org/projects/plancomp">planetary computing</a> processing, it's naturally tempting to use more hardware offload. The obvious choice, GPGPUs, are not a great fit for the problem due to the difficulty of unlocking high data parallelism for geospatial data. So it's back to an old technology I worked on <a href="https://anil.recoil.org/papers/2011-fccm-cloudfpga">twelve years ago</a> in the form of <a href="https://en.wikipedia.org/wiki/Field-programmable_gate_array">FPGAs</a>!</p><p>FPGAs are a very flexible way to execute boolean combinatorial logic, but are notoriously difficult to program. We have two possible angles to explore to address this. One is to design more declarative DSLs for data processing that compile to the FPGAs, such as <a class="contact" href="https://mynameismwd.org">Michael Dales</a> work on <a href="https://github.com/quantifyearth/yirgacheffe">Yirgacheffe</a> or <a class="contact" href="https://github.com/omarathon">Omar Tanner</a>'s work on in-memory <a href="https://anil.recoil.org/ideas/compressive-geospatial">compressive computation</a>. The other angle is to work on the low-level API to programming the FPGAs, to get away from <a href="https://danluu.com/why-hardware-development-is-hard/">Verilog</a> and program in our favourite high-level language...OCaml! <a class="contact" href="https://kcsrk.info">KC Sivaramakrishnan</a> and I have started making a list of resources for programming FPGAs in OCaml for our own education.</p><p>HardCaml was originally a side project by <a href="https://www.ujamjar.com">Andy Ray</a>. He gave a great presentation about it at <a href="https://www.ujamjar.com/presentations/orconf2015.html">ORConf 2015</a>. Later on in the project's lifecycle, he moved it to being maintained by <a href="https://janestreet.com">Jane Street</a>, where is used in production and is <a href="https://github.com/janestreet/hardcaml">open source</a>. The first two resources to learn about HardCaml are to listen to the <a href="https://www.youtube.com/watch?v=GJX5VbKvh90">Signals and Threads episode with Andy</a>, and then to <a href="https://arxiv.org/pdf/2312.15035">read the 2023 paper</a>:</p>···<li>My colleague <a href="https://albert.rierol.net/">Albert Cordona</a> works on analysing the <a href="https://www.science.org/doi/full/10.1126/science.add9330">connectomes of insect brains</a> (among other brains), which involves a lot of image processing over vast datasets as well. I <a href="https://amok.recoil.org/@avsm/113962390567495016">pointed</a> him at an <a href="https://hackaday.io/project/27550-the-hobbyists-guide-to-fpgas">FPGA overview</a>; any other good beginner &quot;FPGA for programmers&quot; ones I could also use?</li>+<p>Thanks also to <a href="https://ujamjar.com">Andy Ray</a> and <a class="contact" href="https://anil.recoil.org/">Andrew W. Moore</a> for feedback and corrections to this post.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>`just` OCaml</title><link href="https://mort.io/blog/just-ocaml/" rel="alternate"></link><published>2025-02-07T00:00:00Z</published><updated>2025-02-07T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/just-ocaml/</id><summary type="html"><p>In similar vein to a <a href="https://mort.io/blog/just-latex">recent post</a>, I have also started using<a href="https://just.systems/"><code>just</code></a> when I periodically need to rebuild my<a href="https://ocaml.org/">OCaml</a> tool<sup class="footnote-reference"><a href="https://mort.io/blog/just-ocaml/#1">1</a></sup> <a href="https://github.com/mor1/ocal"><code>ocal</code></a>. So···</span><span class="z-source z-just"><span class="z-meta z-function z-just"><span class="z-entity z-name z-function z-just">release</span></span>:+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Reverse `find`</title><link href="https://mort.io/blog/reverse-find/" rel="alternate"></link><published>2025-02-05T00:00:00Z</published><updated>2025-02-05T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/reverse-find/</id><summary type="html"><p>In the last few days I discovered I needed to search back up the filesystem from<code>$CWD</code> to find the first occurence of a file (specifically, a <code>Justfile</code> but<a href="https://www.gnu.org/software/bash/"><code>bash</code></a> shell function; here ’tis:</p>···<p>Invoke as (e.g.,) <code>rf Justfile</code>. Alternatively, as a one-liner:</p><pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-variable z-other z-readwrite z-assignment z-shell">F</span><span class="z-keyword z-operator z-assignment z-shell">=</span><span class="z-string z-unquoted z-shell">Justfile</span><span class="z-meta z-function-call z-shell"></span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-keyword z-control z-loop z-while z-shell">while</span> <span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">!</span></span><span class="z-meta z-function-call z-arguments z-shell"> eza<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>l</span> <span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-punctuation z-section z-expansion z-parameter z-begin z-shell">{</span></span><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-variable z-other z-readwrite z-shell">D</span></span><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-keyword z-operator z-assignment z-shell">:=</span></span><span class="z-meta z-group z-expansion z-parameter z-shell">.</span><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-section z-expansion z-parameter z-end z-shell">}</span></span>/<span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">F</span></span></span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-keyword z-control z-loop z-do z-shell">do</span> <span class="z-support z-function z-test z-begin z-shell">[</span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-string z-quoted z-double z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">&quot;</span><span class="z-meta z-group z-expansion z-command z-parens z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-punctuation z-section z-parens z-begin z-shell">(</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">realpath</span></span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">D</span></span>/<span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">F</span></span></span><span class="z-punctuation z-section z-parens z-end z-shell">)</span></span><span class="z-punctuation z-definition z-string z-end z-shell">&quot;</span></span> <span class="z-keyword z-operator z-logical z-shell">==</span> <span class="z-string z-quoted z-double z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">&quot;</span>/<span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">F</span></span><span class="z-punctuation z-definition z-string z-end z-shell">&quot;</span></span> <span class="z-support z-function z-test z-end z-shell">]</span></span> <span class="z-keyword z-operator z-logical z-and z-shell">&amp;&amp;</span> <span class="z-keyword z-control z-flow z-break z-shell">break</span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-variable z-other z-readwrite z-assignment z-shell">D</span><span class="z-keyword z-operator z-assignment z-shell">=</span><span class="z-string z-unquoted z-shell"><span class="z-meta z-group z-expansion z-parameter z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-variable z-other z-readwrite z-shell">D</span></span>/..</span><span class="z-meta z-function-call z-shell"></span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-keyword z-control z-loop z-end z-shell">done</span><span class="z-keyword z-operator z-logical z-continue z-shell">;</span> <span class="z-meta z-function-call z-shell"><span class="z-support z-function z-unset z-shell">unset</span></span><span class="z-meta z-function-call z-arguments z-shell"> D</span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Fake papers abound in the literature</title><link href="https://anil.recoil.org/notes/ai-contamination-of-papers" rel="alternate"></link><published>2025-02-04T00:00:00Z</published><updated>2025-02-04T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ai-contamination-of-papers</id><summary type="html"><p><a class="contact" href="https://toao.com">Sadiq Jaffer</a> sent along this <a href="https://theconversation.com/fake-papers-are-contaminating-the-worlds-scientific-literature-fueling-a-corrupt-industry-and-slowing-legitimate-lifesaving-medical-research-246224">piece in The Conversation</a> last week about the remarkable number of academic papers that are now AI generated. The numbers of these papers are probably underestimated:</p><p>These papers are absorbed into the worldwide library of research faster than they can be weeded out. About 119,000 scholarly journal articles and conference papers are published globally every week, or more than 6 million a year. Publishers estimate that, at most journals, about 2% of the papers submitted – but not necessarily published – are likely fake, although this number can be much higher at some publications.<cite>-- Frederik Joelving et al, <a href="https://theconversation.com/fake-papers-are-contaminating-the-worlds-scientific-literature-fueling-a-corrupt-industry-and-slowing-legitimate-lifesaving-medical-research-246224">The Conversation</a></cite></p><p>What caught my eye in this article is their development of the <a href="https://asistdl.onlinelibrary.wiley.com/doi/10.1002/asi.24495">Problematic Paper Screener</a>, which the good folks at <a href="https://en.wikipedia.org/wiki/Retraction_Watch">Retraction Watch</a> developed. It works with high precision to detect papers issued by grammar-based generators. They noted in <a href="https://theconversation.com/problematic-paper-screener-trawling-for-fraud-in-the-scientific-literature-246317">another article</a> that over 764,000 articles cited papers that could be unreliable, further illustrating the creeping unreliability. <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and I are planning to run this over our <a href="https://anil.recoil.org/projects/ce">growing paper corpus</a>, but I can't find the source code to their system, just <a href="https://dbrech.irit.fr/pls/apex/f?p=9999:1::::::">the hosted version</a>.</p><p>Meanwhile, datasets are also under similar threat of causing <a href="https://www.nature.com/articles/s41586-024-07566-y">recursive model collapse</a>. The <a href="https://github.com/rspeer/wordfreq">Wordfreq</a> team announced in September 2024 that they would <a href="https://github.com/rspeer/wordfreq/blob/master/SUNSET.md">discontinue</a> updating their corpus because generative AI has polluted the data and information that used to be free has became expensive. <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> also noted the related problem of dataset versioning becoming unreliable across science in &quot;<a href="https://anil.recoil.org/papers/2024-uncertainty-cs">Uncertainty at scale: how CS hinders climate research</a>&quot;, but for different reasons -- large datasets are inherently difficult to version and reproduce (it's quite hard to share a terabyte of data over the Internet easily, even in this day and age).</p>+<p>Another big development this week was the release of <a href="https://openai.com/index/introducing-deep-research/">OpenAI's Deep Research</a> feature, which goes off and really mines a literature corpus for information. I've grudgingly updated to their expensive <a href="https://openai.com/index/introducing-chatgpt-pro/">Pro</a> to try this out and will report my findings in a future post. The ability to generate papers has moved well beyond just the grammar generators that the Problem Paper Screener can filter out, so this arms race is unlikely to end well if we're pinning our hopes on detecting AI-generated papers. The current publish-or-perish model has already died; at least our Cambridge <a href="https://www.acp.hr.admin.cam.ac.uk/acp-overview/acp-key-principles">promotion process</a> is more enlightened than &quot;just&quot; looking at paper counts!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Weeknotes: 3rd February 2025</title><link href="https://digitalflapjack.com/weeknotes/2025-02-03/" rel="alternate"></link><published>2025-02-03T09:07:12Z</published><updated>2025-02-03T09:07:12Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/weeknotes/2025-02-03/</id><summary type="html"><h1>Last week</h1><p>I finally got time to sit down and catch up with trying to recreate <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric">STAR</a>, the IUCN's Species Threat Abatement and Restoration metric, which is similar to, but different from, the LIFE metric that I work on. Before Christmas I'd been working with <a href="https://www.researchgate.net/profile/Francesca-Ridley">Chess Ridley</a> who maintains and runs the current STAR pipeline for the IUCN, trying to match up my species selection process with hers. Since then I'd found out some more nuances to both the IUCN redlist data and to my ability to write SQL that queries JSON fields in Postgres, and I'm now sitting closer to Chess's results, but not quite there yet:</p>···<p>I'm still doing some spelunking on individual species in the species data for the LIFE maps, trying to understand why species are represented the way they are. I'll be doing some more of that, and talking later in the week with <a href="https://mail.cambridgeconservation.org/about/people/daniele-baisero/">Daniele Baisero</a> from the <a href="https://www.keybiodiversityareas.org/working-with-kbas/programme/secretariat">KBA Secretariat</a> on their scoping tool, as they would like to include LIFE layers in that, and I think it has a nice UI that would be good for making inspection of the LIFE maps easier for people who aren't familiar with the code.</p><p>I did some little bits of tidying with Yirgacheffe, but did not gat around to making the Metal and CUDA backends swappable.</p>+<p>I also want to write a small how to, using perhaps the AoH data or a species richness map as an example workflow. For that though I need to work out if blogging counts as publishing, as the IUCN data I use for things like this is open access, but requires permission for publishing.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Keyboard</title><link href="https://ryan.freumh.org/keyboard.html" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/keyboard.html</id><summary type="html"><article>···<p><span id="para-3">The Moonlander uses the open-source <a href="https://qmk.fm/">QMK Firmware</a>, and you can find myconfiguration <a href="https://github.com/RyanGibb/qmk_userspace/blob/main/keyboards/zsa/moonlander/keymaps/ryangibb/keymap.c">here</a>.</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Firefox</title><link href="https://ryan.freumh.org/firefox.html" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/firefox.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 3 Feb 2025</title><link href="https://ryan.freumh.org/2025-02-03.html" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-02-03.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Satellites are getting too good for forest carbon?</title><link href="https://anil.recoil.org/notes/forests-spatial-resolution" rel="alternate"></link><published>2025-02-03T00:00:00Z</published><updated>2025-02-03T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/forests-spatial-resolution</id><summary type="html"><p>There's a <a href="https://www.science.org/doi/10.1126/science.adt6811">letter in Science</a> today from a bunch of well known remote sensing researchers that make the unusual point that modern satellite resolution is getting <em>too</em> good to be accurate for forest carbon estimation.</p><p>Many new satellites can resolve fine features on the landscape, and even some individual trees outside forests, but this resolution (0.3-5m) is too high for mapping forest carbon. Forest carbon has a natural resolution constraint: the size of an individual tree. To create these maps, tree data from the ground are required because there is no direct measure of tree carbon nor any way to accurately divide trees into smaller components from space.···<p>With the view of halting the further deforestation of carbon-dense old-growth forests and generating the necessary knowledge to better manage its forests into the future, in 2016 the Sabah state government commissioned CAO to deliver a high-resolution ALS-based carbon map of the entire state. The regional carbon model we develop here underpins this initiative [...]<cite>-- <a href="https://tforces.net/upload/publication-store/2018/Jucker_et_al_2018_Borneo_carbon_Biogeosciences-15-3811-2018.pdf">Tommaso Jucker, David Coomes et al</a>, Estimating aboveground carbon density and its uncertainty in Borneo’s structurally complex tropical forests using airborne laser scanning</cite></p>+<p><a class="contact" href="https://mynameismwd.org">Michael Dales</a> and <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a> are just starting to refresh our <a href="https://anil.recoil.org/papers/2023-pact-tmf">PACT methodology spec</a>, so this yet another timely warning to not race ahead with the <a href="https://anil.recoil.org/projects/rsn">latest satellite data</a> without careful consideration of what it is we are actually measuring (in our case, forest carbon for <a href="https://anil.recoil.org/news?t=carboncredits">carboncredits</a>).</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Emacs</title><link href="https://ryan.freumh.org/emacs.html" rel="alternate"></link><published>2025-02-02T00:00:00Z</published><updated>2025-02-02T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/emacs.html</id><summary type="html"><article>···<h1 id="search-and-replace-in-project"><span class="todo TODO">TODO</span> search and replace in project</h1><p><span id="search-and-replace-in-project-para-0"><a href="https://github.com/hungyiloo/hungyi.net/blob/archive-2024/content/posts/doom-emacs-search-replace-project.org">https://github.com/hungyiloo/hungyi.net/blob/archive-2024/content/posts/doom-emacs-search-replace-project.org</a></span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Disentangling carbon credits and offsets with contributions</title><link href="https://anil.recoil.org/notes/carbon-credits-vs-offsets" rel="alternate"></link><published>2025-02-02T00:00:00Z</published><updated>2025-02-02T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/carbon-credits-vs-offsets</id><summary type="html"><p>The terms <a href="https://en.wikipedia.org/wiki/Carbon_offsets_and_credits">carbon credits and carbon offsets</a> are often used interchangeably,reading up on some <a href="https://ssir.org/articles/entry/forest-contributions-carbon-offsets">recent articles</a> that <a class="contact" href="https://en.wikipedia.org/wiki/Bhaskar_Vira">Bhaskar Vira</a> sent me which introduce a<em>third</em> term, known as <em>&quot;carbon contributions&quot;</em>. Rather than this adding confusion, I···<p>There's a nice <a href="https://www.vice.com/en/article/the-amazon-is-worth-more-money-left-standing-study-shows/">article from Vice</a> that explains the <a href="https://www.nature.com/articles/s41893-018-0175-0">paper</a> more accessibly.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-5">↩︎︎</a></span></li><li id="fn-4"><p>As an aside, I've been purchasing <a href="https://shopping.rspb.org.uk/gifts-home/home-and-kitchen/food-drink/food/gola-chocolate.html">sustainable Gola rainforest chocolate</a> from the RSPB. <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> gave me some of their truffles for Christmas and they were consumed rapidly by my family.</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-4">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>(Neo)Vim</title><link href="https://ryan.freumh.org/vim.html" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/vim.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using computational SSDs for vector databases</title><link href="https://anil.recoil.org/ideas/computational-storage-for-vector-dbs" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/computational-storage-for-vector-dbs</id><summary type="html"><h1>Using computational SSDs for vector databases</h1><p>This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>Large <a href="https://en.wikipedia.org/wiki/Foundation_model">pre-trained models</a> can be used to embed media/documents into concise vector representations with the property that vectors that are &quot;close&quot; to each other are semantically related. <a href="https://en.wikipedia.org/wiki/Nearest_neighbor_search">ANN</a> (Approximate Nearest Neighbour) search on these embeddings is used heavily already in <a href="https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/">RAG</a> systems for LLMs or search-by-example for satellite imagery.</p><p>Right now, most ANN databases almost exclusively use memory-resident indexes to accelerate this searching. This is a showstopper for larger datasets, such as the terabytes of PDFs we have for our <a href="https://anil.recoil.org/projects/ce">big evidence synthesis</a> project, each of which generates dozens of embeddings. For global satellite datasets for <a href="https://anil.recoil.org/projects/rsn">remote sensing of nature</a> at 10m scale this is easily petabytes per year (the raw data here would need to come from tape drives).</p>···<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li><li id="fn-2">+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Deepdive into Deepseek advances</title><link href="https://anil.recoil.org/notes/deepseek-r1-advances" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/deepseek-r1-advances</id><summary type="html"><p><a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> posted a link to this excellent deepdive by <a href="https://www.linkedin.com/in/prasadraje/">Prasad Raje</a> of Udemy into the advances that<a href="https://deepseek.com">DeepSeek</a> R1 has made from a perspective of the core···<li>Multi-token prediction (MTP): [...] you compute more than 1 token and send the aggregate error to back propagate. The intuition is that you get more changes made to the model weights in each training step, thus reducing the total training steps needed [...] Deepseek took this idea further, added innovations of their own (Sequential vs parallel MTP) and used this to reduce training time.<cite> -- <a href="https://www.linkedin.com/pulse/deepdive-deepseek-prasad-raje-jakqc">Prasad Raje</a></li>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Affordable digitisation of insect collections using photogrammetry</title><link href="https://anil.recoil.org/ideas/digitisation-of-insects" rel="alternate"></link><published>2025-02-01T00:00:00Z</published><updated>2025-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/digitisation-of-insects</id><summary type="html"><h1>Affordable digitisation of insect collections using photogrammetry</h1><p>This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://www.cambridgephilosophicalsociety.org/funding/henslow-fellows/dr-tiffany-ki">Tiffany Ki</a> and <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-edgar-turner">Edgar Turner</a>.</p><p>Insects dominate animal biodiversity and are sometimes called &quot;<a href="https://faculty.washington.edu/timbillo/Readings%20and%20documents/ABRIDGED%20READINGS%20for%20PERU/Wilson_1987_Little_things_that_run.pdf">the little things that run the world</a>&quot;. They play a disproportionate role in ecosystem functioning, are highly sensitive to environmental change and often considered to be early indicators of responses in other taxa. There is widespread concern about global insect declines<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup> yet the evidence behind such declines is highly biassed towards the Global North and much is drawn from short-term biodiversity datasets<sup><a class="fn-label" href="https://anil.recoil.org/#fn-2" id="ref-1-fn-2">[2]</a></sup> <sup><a class="fn-label" href="https://anil.recoil.org/#fn-3" id="ref-1-fn-3">[3]</a></sup>.</p><p>The <a href="https://www.museum.zoo.cam.ac.uk/insects">Insect Collection</a> at the University Museum of Zoology, Cambridge holds over 1.2 million specimens. These include specimens collected from the early 19th century to the present day. Most specimens remain undocumented and unavailable for analysis. However, they contain data that are critical to understanding long-term species and community responses to anthropogenic change, and vital to evaluating whether short-term declines are representative of longer-term trends<sup><a class="fn-label" href="https://anil.recoil.org/#fn-4" id="ref-1-fn-4">[4]</a></sup> <sup><a class="fn-label" href="https://anil.recoil.org/#fn-5" id="ref-1-fn-5">[5]</a></sup>. As such, unlocking these insect collections is of paramount importance, and the large-scale nature of these collections necessitates the development of an efficient and effective digitisation process.</p>···<p>Kharouba et al. (2018) <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2017.0405">Using insect natural history collections to study global change impacts: challenges and opportunities</a>. Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences, 374, 20170405. DOI: 10.1098/rstb.2017.0405</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-4">↩︎︎</a></span></li><li id="fn-5"><p>Meineke et al. (2018) <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2017.0386">Biological collections for understanding biodiversity in the Anthropocene</a>. Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences, 374, 20170386. DOI: 10.1098/rstb.2017.0386</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-5">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>How to publish custom Homebrew taps for OCaml</title><link href="https://anil.recoil.org/notes/custom-homebrew-taps" rel="alternate"></link><published>2025-01-31T00:00:00Z</published><updated>2025-01-31T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/custom-homebrew-taps</id><summary type="html"><p>Now that I've <a href="https://anil.recoil.org/notes/bushel-lives">switched</a> to a new website, I'm working on open-sourcing its components. I've got a lot of small OCaml scripts that are all work-in-progress, and so not quite suitable to be published to the <a href="https://github.com/ocaml/opam-repository">central opam-repository</a> but I still need be able to run them conveniently on my own <a href="https://anil.recoil.org/">self-hosted</a> infrastructure.</p><p>I mainly use a variety of macOS and Linux hosts<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup> and I want a workflow as simple as &quot;<code>brew install avsm/ocaml/srcsetter</code>&quot; and have it install a working binary version of my CLI utility. In this case, it's <a href="https://github.com/avsm/srcsetter">srcsetter</a>, a simple tool I knocked up to generate the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Responsive_images">responsive images</a> on this website. Luckily, Homebrew has made this <em>really</em> easy for us! They have a <a href="https://docs.brew.sh/BrewTestBot">BrewTestBot</a> that integrates with GitHub Actions to automate the compilation of binary packages for us, all from a convenient PR-like workflow.</p><p>First, we need to set up a GitHub Homebrew &quot;tap&quot; repository. Mine is <a href="https://github.com/avsm/homebrew-ocaml">avsm/homebrew-ocaml</a> which allows for the tap to be referred to as <code>avsm/ocaml</code> (Homebrew special-cases these to expand to the full GitHub repository). We then add in a couple of GitHub Actions to activate the testbot:</p>···<p>Let's leave <a href="https://anil.recoil.org/">OpenBSD</a> support to another day!</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>PhD viva, UK style</title><link href="https://mort.io/blog/phd-viva/" rel="alternate"></link><published>2025-01-31T00:00:00Z</published><updated>2025-01-31T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/phd-viva/</id><summary type="html"><p>Having recently, happily, had several PhD students completing in short order,···+examiner for doing the viva plus reasonable expenses.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Position paper on scientifically credible carbon credits</title><link href="https://anil.recoil.org/notes/credible-credit-principles" rel="alternate"></link><published>2025-01-30T00:00:00Z</published><updated>2025-01-30T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/credible-credit-principles</id><summary type="html"><p>My colleagues <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a> and <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a> lead the publication of a comprehensive<a href="https://www.cambridge.org/engage/coe/article-details/679385946dde43c9082f7009">report</a> of the steps the voluntary carbon market needs to taketo restore its scientific credibility, with input from many of us in <a href="https://anil.recoil.org/projects/4c">4C</a> and beyond.</p>···<li>integrating DMRV methods into carbon and biodiversity accounting standards to reduce the financial and administrative burdens on nature-based projects and the local communities participating in or affected by them.</li>+<p>This paper represents three years of hard work from the team on trying to blend remote sensing with carbon quantification. For more reading on the topic, you may also wish to browse the full <a href="https://4c.cst.cam.ac.uk/publications">4C publication list</a> for the firehose of activity from the centre.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Arise Bushel, my sixth generation oxidised website</title><link href="https://anil.recoil.org/notes/bushel-lives" rel="alternate"></link><published>2025-01-29T00:00:00Z</published><updated>2025-01-29T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/bushel-lives</id><summary type="html"><p>This website has been through quite a few iterations over the years. The first version in 1998 was written in Perl and hosted on <a href="https://anil.recoil.org/">OpenBSD</a>; the second was rewritten in 2000 when I <a href="https://anil.recoil.org/notes/commit-access-to-php">got commit access to PHP</a>; the third rewrite became a hybrid OCaml/PHP/Perl special in 2004 in <a href="https://en.wikipedia.org/wiki/Blosxom">Blosxom</a>; then the forth rewrite around 2013 got turned into a <a href="https://anil.recoil.org/projects/unikernels">unikernel</a> in MirageOS; then the <a href="https://web.archive.org/web/20220118200046/https://anil.recoil.org/">fifth</a> in 2019 then transitioned to an OCaml static site generator hosted on a prerelease <a href="https://github.com/avsm/eeww">multicore OCaml webserver</a>. So the sixth generation now needs something to continue the grand <a href="https://en.wikipedia.org/wiki/Rube_Goldberg_machine">Rube Goldberg</a> tradition of helping me learn the latest and greatest in systems technology.</p><p>And so here it is! The site is now written in a bleeding-edge unreleased variant of OCaml with extensions based around <a href="https://blog.janestreet.com/icfp-2024-index/">Rust-like type system features</a> activated, including rather exciting <a href="https://popl25.sigplan.org/details/POPL-2025-popl-research-papers/23/Data-Race-Freedom-la-Mode">data-race freedom</a> work that just won a best paper award at POPL 2025. It's normally difficult to work on continuously moving compilers, but Diana Kalinichenko did a tremendous amount of work into making it usable with opam out of the box, and this post documents the journey to getting this website live.</p><p>Firstly, we did some groundwork a few months ago by adding support into the opam-repository for <a href="https://github.com/ocaml/opam-repository/pull/26471">bootstrap versions</a> of dune, menhir and ocamlfind. These are used to build the Jane Street version of the OCaml compiler, which is published as an <a href="https://github.com/janestreet/opam-repository/tree/with-extensions">opam-repository#with-extensions</a>.</p>···+dive into some region extensions and see how far I get!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>AT Protocol and an IR for Wikis</title><link href="https://patrick.sirref.org/weekly-2025-01-27/" rel="alternate"></link><published>2025-01-27T00:00:00Z</published><updated>2025-01-27T00:00:00Z</updated><author><name>PatrickF</name></author><id>https://patrick.sirref.org/weekly-2025-01-27/</id><summary type="html"><p><p>This week I've been diving into the <a href="https://atproto.com/">AT Protocol</a>. </p>···<p>I was happy to find the <a href="https://www.opentech.fund/fellowships/icfp/">Information Controls Fellowship Program</a>. </p><p>The Information Controls Fellowship Program (ICFP) cultivates research, outputs, and creative collaboration on topics related to repressive internet censorship and surveillance. </p>+</blockquote></summary><category term="Weeklies"></category></entry><entry><title>Mon 27 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-27.html" rel="alternate"></link><published>2025-01-27T00:00:00Z</published><updated>2025-01-27T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-01-27.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Fontsizing in LaTeX</title><link href="https://mort.io/blog/fontsizing/" rel="alternate"></link><published>2025-01-24T00:00:00Z</published><updated>2025-01-24T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/fontsizing/</id><summary type="html"><p>I recently had colleagues hit an issue that I have hit myself in the past, and···<a href="https://www.luatex.org/"><code>luatex</code></a> backend driver instead by passing<code>-lualatex</code> to <a href="https://mgeier.github.io/latexmk.html"><code>latexmk</code></a> and that has+worked fine so far</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Updated preprint on LLMs for evidence-based decision support</title><link href="https://anil.recoil.org/news/2024-ce-llm-2" rel="alternate"></link><published>2025-01-23T00:00:00Z</published><updated>2025-01-23T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-ce-llm-2</id><summary type="html"><p>We have just updated our <a href="https://anil.recoil.org/papers/2024-ce-llm">preprint</a> on using LLMs for evidence decision support with more evaluation results and corrections from peer review.</p><p>Our findings suggest that, with careful domain-specific design, LLMs could potentially be powerful tools for enabling expert-level use of evidence syntheses and databases. However, general LLMs used &quot;out-of-the-box&quot; are likely to perform poorly and misinform decision-makers. By establishing that LLMs exhibit comparable performance with human synthesis experts on providing restricted responses to queries of evidence syntheses and databases, future work can build on our approach to quantify LLM performance in providing open-ended responses.</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Forester, ICFP, Wikis</title><link href="https://patrick.sirref.org/weekly-2025-01-20/" rel="alternate"></link><published>2025-01-20T00:00:00Z</published><updated>2025-01-20T00:00:00Z</updated><author><name>PatrickF</name></author><id>https://patrick.sirref.org/weekly-2025-01-20/</id><summary type="html"><p>This week was my first full week back from the break and I found it challenging trying to get back into what I had been working on previously. </p>···+<p>I met with most of my <a href="https://patrick.sirref.org/part-ii-2024/">Part II</a> students this week which was nice to catch up and see how their projects are going. I also started marking work for my first year students who are at the <em>induction</em> part of their <a href="https://patrick.sirref.org/discrete-maths/">Discrete Maths</a> course. </p></summary><category term="Weeklies"></category></entry><entry><title>Mon 20 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-20.html" rel="alternate"></link><published>2025-01-20T00:00:00Z</published><updated>2025-01-20T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-01-20.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>`just` LaTeX it!</title><link href="https://mort.io/blog/just-latex/" rel="alternate"></link><published>2025-01-18T00:00:00Z</published><updated>2025-01-18T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/just-latex/</id><summary type="html"><p>I have recently become a fan of <a href="https://just.systems/"><code>just</code></a> as a replacement for the venerable<a href="https://www.gnu.org/software/make/manual/make.html"><code>make</code></a>. I find that nowadays I rarely need the built-in dependency rulesthat <a href="https://www.gnu.org/software/make/manual/make.html"><code>make</code></a> provides. Perhaps more radically, I also rarely need to write myown as the prevelance of format-specific build tools such as <a href="https://doc.rust-lang.org/stable/cargo/"><code>cargo</code></a>,···<pre class="language-just z-code"><code class="language-just"><span class="z-source z-just"><span class="z-comment z-line z-number-sign z-just"><span class="z-punctuation z-definition z-comment z-begin z-just"># </span>watch a file, rebuilding when saved</span></span><span class="z-source z-just"><span class="z-meta z-function z-just"><span class="z-entity z-name z-function z-just">watch</span></span> tgt:</span><span class="z-source z-just"> while inotifywait -e close_write <span class="z-meta z-interpolation z-just"><span class="z-punctuation z-section z-interpolation z-begin z-just">{{</span><span class="z-variable z-other z-just">tgt</span><span class="z-punctuation z-section z-interpolation z-end z-just">}}</span></span>* ; do just pdf <span class="z-meta z-interpolation z-just"><span class="z-punctuation z-section z-interpolation z-begin z-just">{{</span><span class="z-variable z-other z-just">tgt</span><span class="z-punctuation z-section z-interpolation z-end z-just">}}</span></span> ; done+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 13 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-13.html" rel="alternate"></link><published>2025-01-13T00:00:00Z</published><updated>2025-01-13T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-01-13.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>LIFE metric published in Royal Society Phil Trans B</title><link href="https://anil.recoil.org/news/2024-life-3" rel="alternate"></link><published>2025-01-09T00:00:00Z</published><updated>2025-01-09T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-life-3</id><summary type="html"><p>After some years of hard work, our <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a> biodiversity metric was published today in a <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327">special issue</a> of the Royal Society Philosophical Transactions B! The idea behind LIFE is that although human-driven habitat loss is known to be the greatest cause of the <a href="https://www.unep.org/facts-about-nature-crisis">biodiversity crisis</a>, we do not yet have robust spatially explicit metrics that <em>quantify</em> the relative impacts of human actions on species extinctions. And that's what LIFE provides: a way to compare the relative impacts of some landuse anywhere in the world, in a manner that is globally applicable. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-life-3">409 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 6 Jan 2025</title><link href="https://ryan.freumh.org/2025-01-06.html" rel="alternate"></link><published>2025-01-06T00:00:00Z</published><updated>2025-01-06T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2025-01-06.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Introducing `bibtox`</title><link href="https://mort.io/blog/bibtox/" rel="alternate"></link><published>2025-01-03T00:00:00Z</published><updated>2025-01-03T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/bibtox/</id><summary type="html"><p>After some time using various tools and scripts to format and sort my files ofBibTeX/BibLaTeX entries, I finally gave up back in March and <a href="https://github.com/mor1/bibtox">wrote one myselfcombination of server-side <a href="https://github.com/mor1/bibtox/blob/83eda34bc9e79bd5251b1ae9623b5e905532c599/bib2json.py">Python</a> and in-page <a href="https://github.com/mor1/bibtox/blob/83eda34bc9e79bd5251b1ae9623b5e905532c599/papers.coffee">CoffeeScript</a>, plus a···<p><a href="https://github.com/mor1/bibtox/issues">Issues</a> or <a href="https://github.com/mor1/bibtox/pulls">pull+requests</a> welcome!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 30 Dec 2024</title><link href="https://ryan.freumh.org/2024-12-30.html" rel="alternate"></link><published>2024-12-30T00:00:00Z</published><updated>2024-12-30T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-12-30.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Retreat from TUM</title><link href="https://mort.io/blog/tum-retreat/" rel="alternate"></link><published>2024-12-18T00:00:00Z</published><updated>2024-12-18T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/tum-retreat/</id><summary type="html"><p>Ok, ok, I exaggerate – it’s not really that far. But any time I have to set the<p><a href="https://www.ce.cit.tum.de/cm/research-group/">TU Munchen</a> host an <a href="https://www.ce.cit.tum.de/cm/events/mir3/">annualretreat</a>, and thanks to <a href="https://www.ce.cit.tum.de/cm/research-group/joerg-ott/">Prof. Joerg···but the bus couldn’t! And then the retreat happened – but you can <a href="https://www.ce.cit.tum.de/cm/events/mir3/mir3-2024-10/">read about+that elsewhere</a> :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 16 Dec 2024</title><link href="https://ryan.freumh.org/2024-12-16.html" rel="alternate"></link><published>2024-12-16T00:00:00Z</published><updated>2024-12-16T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-12-16.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>The Partially Dynamic Web</title><link href="https://digitalflapjack.com/blog/the-partially-dynamic-web/" rel="alternate"></link><published>2024-12-08T11:59:48Z</published><updated>2024-12-08T11:59:48Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/the-partially-dynamic-web/</id><summary type="html"><h1>Background</h1><p>I have three websites (this one, my <a href="https://mynameismwd.org/">personal site</a>, and one for <a href="https://mwdales-guitars.uk/">my luthiery endeavours</a>), and despite each starting out with a different technology stack, for the last few years I’d migrated them all to the <a href="https://gohugo.io">Hugo static site generator</a>, as a way of making it easier for me to mess around with. Without a fixed database, I could more easily readily structure the content as I wanted it, I had more freedom over templating, and ultimately it’s less resource intensive to compile the site occasionally and just serve static files than keep dynamic infrastructure running for what is a set of low traffic websites. At least in theory, we’ll come back to this last point.</p><p>Like most static site generators, Hugo uses a system called <a href="https://gohugo.io/content-management/front-matter/">Front matter</a>, where you store each page as a <a href="https://en.wikipedia.org/wiki/Markdown">markdown file</a> of content, and some <a href="https://en.wikipedia.org/wiki/YAML">YAML</a> at the top of that file to store metadata, such as page title and publication date, which isn’t something markdown supports. With these two parts Hugo can generate your website based on where files are in directories, and with the appropriate bits from the front matter. Hugo will use a template system to turn your markdown into HTML files, roughly following the structure of the folders you store the markdown files in.</p><p>The templates for my sites I’d made by hand myself, which I think is a key part to unlocking the power of Hugo. Because not only can you decide how your markdown looks from your template, but you can also query the front matter, and so change how your page looks based on the metadata. I heavily used this feature, using it a bit like a database entry for each page. This let me add a synopsis to each page, or a title image with alt-text that becomes the thumbnail on the list views. For photos I store all the EXIF data in there too.</p>···<p>I’m using the <a href="https://aantron.github.io/dream/">Dream</a> library for <a href="https//ocaml.org/">OCaml</a>, which has both built in routing and templating. I made sure to keep the URL layout that Hugo used as best I could, so in theory the transition shouldn’t be noticed by most people, as all the content remains at the same URL it was.</p><p>Using a functional language for this kind of work actually maps very nicely: all I’m doing is taking data in one format and presenting it in another, so functional transforms are what I need. The way the website is stored on disk for a static site generator means I'm mostly doing a translation of that structure into the URIs for the website, so I was starting from a good place for this project.</p><p>Thanks to Hugo encouraging me to use shortcodes for all resources in a page (I never used the markdown image tags), it was low effort to ensure all resources in a page have their own URL to render them on demand, as I don’t ever need to parse the markdown myself beyond pulling out shortcodes. For images I’m just using <a href="https://gallium.inria.fr/camlimages/">Camlimages</a> which is quite an old library and doesn’t support all the image formats I have acquired over 20 plus years, but it’s enough to get started with. Performance wise, this will be a regression, as images are resized and stored in a small cache the first time they’re viewed, but given most people consume my site via RSS, when I add a new page and look at it myself to check it works, it’ll mean for most folk they don’t see that.</p>+<p>The aim so far has just been to get as close to the Hugo version as I can without changing the data on disk. What I'm looking forward to doing now I've switched is making changes to the on disk representation to let me simplify the OCaml code, and add some new fun features.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Horizon scan on AI and conservation published</title><link href="https://anil.recoil.org/news/2024-ai-conhorizon-1" rel="alternate"></link><published>2024-12-05T00:00:00Z</published><updated>2024-12-05T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-ai-conhorizon-1</id><summary type="html"><p>Back in July 2024, a large group of conservation and computer scientists got together in the <a href="https://conservation.cam.ac.uk">CCI</a> to prioritise the storm of AI-related projects that have been kicking off around the world. Our key goal was to harness AI to accelerate the positive impact of conservation efforts, while minimising harm caused through either the direct or indirect use of AI technologies.</p><p>The first horizon scan resulting from this has just been published in Trends in Ecology and Evolution. If you're looking for a gentle introduction to some of the terms in AI from a non-experts perspective, the first section does a good job of defining a glossary as well. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-ai-conhorizon-1">118 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-ai-conhorizon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 2 Dec 2024</title><link href="https://ryan.freumh.org/2024-12-02.html" rel="alternate"></link><published>2024-12-02T00:00:00Z</published><updated>2024-12-02T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-12-02.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Towards verifiable, privacy-preserving carbon emissions claims</title><link href="https://anil.recoil.org/news/2024-loco-emissions-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-loco-emissions-1</id><summary type="html"><p>Customers of online services may want to take carbon emissions into account···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-emissions.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Towards a frugal userspace for Linux</title><link href="https://anil.recoil.org/news/2024-loco-shark-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-loco-shark-1</id><summary type="html"><p>All the work we've been doing on biodiversity (such as <a href="https://anil.recoil.org/projects/life">LIFE</a>) comes at···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-shark.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Prototyping carbon-aware domain name resolution</title><link href="https://anil.recoil.org/news/2024-loco-carbonres-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-loco-carbonres-1</id><summary type="html"><p><a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a> and I have been thinking about how the current Internet architecture fails to treat the carbon emissionsassociated with networked services as a first-class metric. So when the <a href="https://locos.codeberg.page/loco2024/">LOCO</a> conference came up, we tried extending the DNS with load balancing techniques to consider the carbon cost of scheduling decisions. A next step was then to build a custom <a href="https://github.com/RyanGibb/eon">DNS server written in OCaml</a> to actively wake machines running networked services as a side effect of the name···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-carbonres.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cooperative Sensor Networks for Long-Term Biodiversity Monitoring</title><link href="https://anil.recoil.org/news/2024-loco-terracorder-1" rel="alternate"></link><published>2024-12-01T00:00:00Z</published><updated>2024-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-loco-terracorder-1</id><summary type="html"><p><a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> and I have been having great fun designing embedded systems forcooperative biodiversity monitoring. Josh presented our work over at <a href="https://www.sicsa.ac.uk/loco/loco2024/">LOCO···&nbsp; <a href="https://anil.recoil.org/papers/2024-loco-terracorder.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 18 Nov 2024</title><link href="https://ryan.freumh.org/2024-11-18.html" rel="alternate"></link><published>2024-11-18T00:00:00Z</published><updated>2024-11-18T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-11-18.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Royal Society and DeepMind host AI for Science Forum</title><link href="https://anil.recoil.org/notes/ai-for-science-2024" rel="alternate"></link><published>2024-11-18T00:00:00Z</published><updated>2024-11-18T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ai-for-science-2024</id><summary type="html"><p>I got invited to join the Royal Society and DeepMind to a summit on<a class="contact" href="mailto:jon.crowcroft@cl.cam.ac.uk">Jon Crowcroft</a>. This event is hot on the heels of theexcellent RS report on <a href="https://royalsociety.org/news-resources/projects/science-in-the-age-of-ai/">Science in the Age of AI</a>···<p>These conclude my live notes! Beyond the notes here, the corridor conversations were incredibly+useful for you to have put them online as well.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Published a legal perspective on high integrity forest carbon credits</title><link href="https://anil.recoil.org/news/2024-cclr-carbon-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-cclr-carbon-1</id><summary type="html"><p><a class="contact" href="https://www.cst.cam.ac.uk/people/smc70">Sophie Chapman</a> lead an <a href="https://anil.recoil.org/ideas/legal-aspects-of-credits">effort</a> to explore a novel legal framework for forest carbon credits···&nbsp; <a href="https://anil.recoil.org/papers/2024-cclr-carbon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Presented poster at Sensys on low-power biodiversity monitoring</title><link href="https://anil.recoil.org/news/2024-sensys-terracorder-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-sensys-terracorder-1</id><summary type="html"><p><a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> presented our work on biodiversity sensing over at <a href="http://sensys.acm.org/2024/">ACM Sensys 2024</a> in China. The <a href="http://sensys.acm.org/2024/demos/">full set</a> of papers and demos has a range of impressive work on sensor networks, and some that stood out to me follow. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-sensys-terracorder-1">140 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-sensys-terracorder.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Preprint on using LLMs to for evidence-based decision support</title><link href="https://anil.recoil.org/news/2024-ce-llm-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-ce-llm-1</id><summary type="html"><p>We have just uploaded a preprint on using LLMs for conservation evidence, based on our <a href="https://anil.recoil.org/projects/ce">work</a> on large-scale crawling of the academic literature. Well done in particular to <a class="contact" href="mailto:ri301@cam.ac.uk">Radhika Iyer</a> for having done the bulk of the evaluation on this as part of a very productive summer internship with us!</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Paper on scheduling for reduced tail task latencies</title><link href="https://anil.recoil.org/news/2024-socc-murmuration-1" rel="alternate"></link><published>2024-11-01T00:00:00Z</published><updated>2024-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-socc-murmuration-1</id><summary type="html"><p><a class="contact" href="https://www.cl.cam.ac.uk/~sv440/">Smita Vijayakumar</a> went along to Seattle to <a href="https://acmsocc.org/2024/">SOCC 2024</a> to present her PhD research on Murmuration. This is a new scheduler for Kubernetes that allows for 15%--25% faster job completion times than the default scheduler for different job arrival characteristics in datacenters that are very busy. <span class="morewords">[…<a href="https://anil.recoil.org/news/2024-socc-murmuration-1">71 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-socc-murmuration.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building OCaml on Haiku</title><link href="https://digitalflapjack.com/blog/building-ocaml-on-haiku/" rel="alternate"></link><published>2024-10-27T09:01:41Z</published><updated>2024-10-27T09:01:41Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/building-ocaml-on-haiku/</id><summary type="html"><p>What has to be a niche of a niche post wise, I was intrigued when I spotted <a href="https://www.haiku-os.org/blog/anarchos/2024-04-09_an_odissey_to_port_compcert/">this post</a> recently that someone had built <a href="https://ocaml.org">OCaml</a> for <a href="https://www.haiku-os.org/">Haiku</a>. I'd been playing with Haiku a little recently, as I wanted to understand its file-system, and so I thought I'd have a go. I turns out it's quite simple, and although the above post does kinda tell you what you need, there's a few gaps, so this post is just recording what I did. But all credit has to go to Sylvain Kerjean for that original post which gets you most the way, this is just trying to make it easier for me to cut and paste later!</p><li>Ensure <code>/boot/home/config/non-packaged/bin</code> is on your <code>PATH</code> variable.</li>···+<p>It is however, increadably slow - my graphics library isn't very well optimised, as usually on modern hardware it doesn't need it to push old-school VGA like graphics around, but running natively on my AMD Razen machine it was really quite poor, low single-digit frames per second. In part this I assume is related to Haiku not knowing about my fancy NVIDIA graphics card, and just using the stock framebuffer driver, and in part because OCaml doesn't know about Haiku enough to build a native binary and is instead using the bytecode backend.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Mapping greener futures with planetary computing</title><link href="https://anil.recoil.org/news/a0280750-2ef0-4f5c-b138-68f7b11b4c29-1" rel="alternate"></link><published>2024-10-24T01:00:00Z</published><updated>2024-10-24T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/a0280750-2ef0-4f5c-b138-68f7b11b4c29-1</id><summary type="html"><p>I got invited by <a href="https://profiles.ucl.ac.uk/78591-serta%C3%A7-sehlikoglu">Sertaç Sehlikoglu</a> to deliver a lecture to the Masters students down at the <a href="https://www.ucl.ac.uk/bartlett/igp/">UCL Institute for Global Prosperity</a>. I talked about the recent work on <a href="https://anil.recoil.org/projects/plancomp">planetary computing</a>, with an overview of the <a href="https://anil.recoil.org/projects/life">LIFE</a> and <a href="https://anil.recoil.org/papers/2024-food-life">FOOD</a> papers.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 14 Oct 2024</title><link href="https://ryan.freumh.org/2024-10-14.html" rel="alternate"></link><published>2024-10-14T01:00:00Z</published><updated>2024-10-14T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-10-14.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>On the SOCC 2024 PC</title><link href="https://anil.recoil.org/notes/socc-pc" rel="alternate"></link><published>2024-10-08T01:00:00Z</published><updated>2024-10-08T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/socc-pc</id><summary type="html"><p>After some time away from cloud computing (due to my new focus on <a href="https://anil.recoil.org/projects/life">conservation research</a>), I served on the <a href="https://acmsocc.org/2024/">ACM SOCC 2024</a> program committee. It was quite interesting seeing the massive shift away from &quot;traditional&quot; cloud research (such as consensus protocols) towards many submissions aimed at accelerating machine learning workloads.</p>+<p>I also had a paper accepted there on <a href="https://anil.recoil.org/papers/2024-socc-murmuration">decentralised scheduling</a>, thanks to my former PhD student <a class="contact" href="https://www.cl.cam.ac.uk/~sv440/">Smita Vijayakumar</a> and her hard work on Murmuration!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 7 Oct 2024</title><link href="https://ryan.freumh.org/2024-10-07.html" rel="alternate"></link><published>2024-10-07T01:00:00Z</published><updated>2024-10-07T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-10-07.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Royal Society meeting on ecological/commercial risks</title><link href="https://anil.recoil.org/notes/rs-ecorisk-day1" rel="alternate"></link><published>2024-10-03T01:00:00Z</published><updated>2024-10-03T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/rs-ecorisk-day1</id><summary type="html"><p>I'm at the Royal Society this morning for the 2 day programme on <a href="https://royalsociety.org/science-events-and-lectures/2024/10/ecological-and-commercial-risk/">&quot;How does ecological risk related to commercial risk?&quot;</a>, and am reporting on the <a href="https://royalsociety.org/-/media/events/2024/10/ecological-risk/programme-booklet.pdf">morning session</a>. The full program is being <a href="https://www.youtube.com/watch?v=gVuxzand8RE">livestreamed</a> so please do dial in if the below notes seem interesting to you. I put this note up almost live, so any errors below are my own.<em>(Update: partial <a href="https://anil.recoil.org/#daytwo">day 2 notes</a> now available below)</em></p><p>The summit kicked off with a keynote by economist <a href="https://en.wikipedia.org/wiki/Partha_Dasgupta">Sir Partha Dasgupta</a>. The focus was on the intersection of nature and economics, covering how markets fail to account for the ecosystems that sustain them. His <a href="https://www.gov.uk/government/publications/final-report-the-economics-of-biodiversity-the-dasgupta-review">landmark report</a> covered ecosystem services, freshwater, tipping points, and physical risk, bringing to light the urgent need to reframe economic activities around the services provided by nature.</p>···<p>This concludes my rapid note taking. Do join the <a href="https://royalsociety.org/science-events-and-lectures/2024/10/ecological-and-commercial-risk/">livestream</a> and follow for the remaining day and a half if you have a spare moment!</p><p><em>Edit: upon being prodded by <a class="contact" href="https://profiles.imperial.ac.uk/a.christie">Alec Christie</a>, I've uploaded a <a href="https://notebooklm.google">NotebookLM</a> generated podcast summary of the morning. It's surprisingly entertaining, but I'm sure I'm going to regret this for some reason...</em></p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Workshopping, across the universe</title><link href="https://mort.io/blog/workshopping-edgeless/" rel="alternate"></link><published>2024-10-02T01:00:00Z</published><updated>2024-10-02T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/workshopping-edgeless/</id><summary type="html"><p>One of the pleasures of being an academic is to travel to nice places to meet<a href="https://cloudresearch.org/workshops/17th/">17th Cloud Control Workshop</a>.</p>···<p>Postcript: in case you’re curious, the title is a passing reference to <a href="https://en.wikipedia.org/wiki/Star_Trekkin%27">Star+anticipated.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 30 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-30.html" rel="alternate"></link><published>2024-09-30T01:00:00Z</published><updated>2024-09-30T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-09-30.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 23 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-23.html" rel="alternate"></link><published>2024-09-23T01:00:00Z</published><updated>2024-09-23T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-09-23.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Being on the HotNets 2024 program committee</title><link href="https://anil.recoil.org/notes/hotnets-pc-2024" rel="alternate"></link><published>2024-09-22T01:00:00Z</published><updated>2024-09-22T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/hotnets-pc-2024</id><summary type="html"><p>I was on the program committee for <a href="https://conferences.sigcomm.org/hotnets/2024/">HotNetsthoroughly enjoyable experience. The <a href="https://conferences.sigcomm.org/hotnets/2024/accepted.html">list of accepted···<a href="https://propl.dev">Programming for the Planet</a>, which is due in 2025. Morenews on that soon! In the meanwhile, get your papers into <a href="https://www.sicsa.ac.uk/loco/loco2024/">LOCO+days...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Part II Projects</title><link href="https://mort.io/blog/part-ii-projects/" rel="alternate"></link><published>2024-09-20T01:00:00Z</published><updated>2024-09-20T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/part-ii-projects/</id><summary type="html"><p>Undergraduate final-year (“Part II”) project supervision goes in fits and···+topic for another day.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 16 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-16.html" rel="alternate"></link><published>2024-09-16T01:00:00Z</published><updated>2024-09-16T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-09-16.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 9 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-09.html" rel="alternate"></link><published>2024-09-09T01:00:00Z</published><updated>2024-09-09T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-09-09.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Post-COVID19 TPC experience</title><link href="https://mort.io/blog/post-covid-tpc/" rel="alternate"></link><published>2024-09-09T01:00:00Z</published><updated>2024-09-09T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/post-covid-tpc/</id><summary type="html"><p>I do not participate in a huge number of TPCs (Technical Programme Committees)<p>I have done a few though, some big (e.g., <a href="https://www.usenix.org/conference/nsdi15">USENIX NSDI</a>, <a href="https://conferences.sigcomm.org/imc/2018/">ACM IMC</a>),···+perhaps, once I get my thoughts in order.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mitigating credit reversal risks in nature-based solutions</title><link href="https://anil.recoil.org/notes/mitigating-nbs-risk-paper" rel="alternate"></link><published>2024-09-08T01:00:00Z</published><updated>2024-09-08T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/mitigating-nbs-risk-paper</id><summary type="html"><p>Many of the questions around our recent <a href="https://anil.recoil.org/papers/2023-naturecredits">Nature Sustainability commentary on NbS credits</a> revolve aroundlatest paper published in Carbon Management on <em>&quot;<a href="https://anil.recoil.org/papers/2024-nbs-risk">Mitigating risk of credit reversal in nature-based climate solutions by optimally anticipating carbon release</a>&quot;</em> tries to address this.</p>···+our methods!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Towards security specifications for agentic AIs</title><link href="https://anil.recoil.org/news/2024-hope-bastion-1" rel="alternate"></link><published>2024-09-04T01:00:00Z</published><updated>2024-09-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-hope-bastion-1</id><summary type="html"><p>A very fun talk at <a href="https://icfp24.sigplan.org/home/hope-2024">ACM HOPE 2024</a>on some new work with <a class="contact" href="https://web.eecs.umich.edu/~comar/">Cyrus Omar</a> and <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> on how we can formally specify···&nbsp; <a href="https://anil.recoil.org/papers/2024-hope-bastion.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>New teaching page with my Computer Science courses</title><link href="https://anil.recoil.org/notes/new-teaching-page" rel="alternate"></link><published>2024-09-03T01:00:00Z</published><updated>2024-09-03T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/new-teaching-page</id><summary type="html"><p>There's a new <a href="https://anil.recoil.org/notes/teaching">teaching</a> page with my past and present courses, and links+the lectures themselves.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 2 Sep 2024</title><link href="https://ryan.freumh.org/2024-09-02.html" rel="alternate"></link><published>2024-09-02T01:00:00Z</published><updated>2024-09-02T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-09-02.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Building species models of the planet</title><link href="https://anil.recoil.org/notes/ukri-grant-terra" rel="alternate"></link><published>2024-09-02T01:00:00Z</published><updated>2024-09-02T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ukri-grant-terra</id><summary type="html"><p>I don't normally announce funded grants (preferring to focus on outcomes), but I'm really excited by this one and couldn't resist! Myself and my colleagues <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> (from computer science), <a class="contact" href="https://coomeslab.org">David A Coomes</a> (from Plant Sciences), <a class="contact" href="https://www.zoo.cam.ac.uk/directory/andrew-balmford">Andrew Balmford</a> (from Zoology) and <a class="contact" href="https://www.cambridgeconservation.org/about/people/professor-neil-burgess/">Neil Burgess</a> (the Head of Science at <a href="https://www.unep-wcmc.org/en/the-team">UNEP-WCMC</a>) have just received a £1.2m grant from the UKRI to work on <a href="https://www.cst.cam.ac.uk/news/meet-terra-ai-aiming-map-terrestrial-life-planet">building foundation models for planetary intelligence</a>.</p><p>Now, normally a grant isn't news, but I wanted to highlight the scheme that it came under. UKRI announced an <a href="https://www.ukri.org/news/first-projects-from-ukris-new-interdisciplinary-scheme-announced/">interdisciplinary program</a> specifically for projects that don't normally get funded by just one research council. In our case, this work usually falls between the cracks of EPSRC <em>(&quot;too much nature&quot;)</em> or NERC <em>(&quot;too much engineering&quot;)</em> or STFC <em>(&quot;not enough satellites&quot;)</em>. But this interdisciplinary program expressly assembled a panel across all these areas, and collectively gave us a shot. I really hope this scheme continues to gather steam within the UKRI.</p><p>As to what we're doing? There'll be the evolution of the work described in <a href="https://anil.recoil.org/projects/rsn">Remote Sensing of Nature</a> and <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a>, with lots of domain knowledge that we're pulling together with our partners at UNEP-WCMC (especially <a class="contact" href="https://www.cambridgeconservation.org/about/people/professor-neil-burgess/">Neil Burgess</a> and <a class="contact" href="https://www.kew.org/science/our-science/people/ian-ondo">Ian Ondo</a>) on plant and animal species distributions across the globe.</p><p><figure class="image-center"><img alt="Us freezing in a Scottish August counting heather growth. There&#x27;s got to be a more scalable way of doing this, right?" class="content-image" src="https://anil.recoil.org/images/2024-clr-scotland.webp" title="Us freezing in a Scottish August counting heather growth. There&#x27;s got to be a more scalable way of doing this, right?" /><figcaption>Us freezing in a Scottish August counting heather growth. There&#x27;s got to be a more scalable way of doing this, right?</figcaption></figure>···<li><a href="https://anil.recoil.org/papers/2024-life">LIFE: A metric for mapping the impact of land-cover change on global extinctions</a> is our new metric for calculating biodiversity impacts worldwide in a comparable way. We intend to extend it to cover plant species.</li><li><a href="https://anil.recoil.org/papers/2024-food-life">Quantifying the impact of the food we eat on species extinctions</a> connects up the biodiversity metric to supply chains to figure out the environmental impact of human food consumption on the planet. We intend to increase its resolution significantly with the new foundation models derived from remote sensing data.</li><li><a href="https://anil.recoil.org/papers/2024-terracorder">Terracorder: Sense Long and Prosper</a> is a battery-efficient sensing platform I'm working on with our Imperial buddies. We need more data about our planet!</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Parallel traversal effect handlers for OCaml</title><link href="https://anil.recoil.org/ideas/effect-parallel-strategies" rel="alternate"></link><published>2024-09-01T01:00:00Z</published><updated>2024-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/effect-parallel-strategies</id><summary type="html"><h1>Parallel traversal effect handlers for OCaml</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:sb2634@cam.ac.uk">Sky Batchelor</a>. It is co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>effects. Xie <em>et al</em> proposed a <code>traverse</code> handler for parallelisation of···<p><a href="https://anil.recoil.org/papers/2021-pldi-retroeff">Retrofitting effect handlers onto OCaml</a>, PLDI 2021 describes how the effect system in OCaml works.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-3"><p><a href="https://github.com/ocaml-multicore/eio">EIO</a> is a high-performance direct-style IO library we have been developing for OCaml.</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-3">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Gradually debugging type errors</title><link href="https://anil.recoil.org/ideas/gradual-type-error-debugging" rel="alternate"></link><published>2024-09-01T01:00:00Z</published><updated>2024-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/gradual-type-error-debugging</id><summary type="html"><h1>Gradually debugging type errors</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:mc2372@cam.ac.uk">Max Carroll</a>. It is co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>···<li><a href="https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.SNAPL.2015.274">Refined Criteria for Gradual Typing</a></li><li><a href="https://arxiv.org/abs/1810.12619">Dynamic Type Inference for Gradual Hindley-Milner Typing</a></li><li><a href="https://arxiv.org/abs/1606.07557">Dynamic Witnesses for Static Type Errors (or, Ill-Typed Programs Usually Go Wrong)</a></li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Paper published on ex-ante forecasts of nature-based solutions</title><link href="https://anil.recoil.org/news/2024-nbs-risk-2" rel="alternate"></link><published>2024-08-31T01:00:00Z</published><updated>2024-08-31T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-nbs-risk-2</id><summary type="html"><p>Our paper on ex-ante projection for nature-based solutions has been published in the <a href="https://www.tandfonline.com/journals/tcmt20">Journal of Carbon Management</a>. I also wrote up some <a href="https://anil.recoil.org/notes/mitigating-nbs-risk-paper">long-form thoughts</a> on it here.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-nbs-risk.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Stop, Start</title><link href="https://mort.io/blog/stop-start/" rel="alternate"></link><published>2024-08-30T01:00:00Z</published><updated>2024-08-30T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/stop-start/</id><summary type="html"><p>Well, here we go again, again. Having stalled out back in 2013 to restart inleak out slowly, in <a href="https://mort.io/tags/old">backdated form</a>.</p>···</span></span><span class="z-source z-nix"><span class="z-string z-quoted z-other z-nix"> <span class="z-punctuation z-definition z-string z-other z-end z-nix">''</span></span><span class="z-invalid z-illegal">;</span></span><span class="z-source z-nix"> <span class="z-invalid z-illegal z-reserved z-nix">in</span></span><span class="z-source z-nix"> <span class="z-punctuation z-definition z-list z-nix">[</span> <span class="z-punctuation z-definition z-attrset z-nix">{</span> <span class="z-entity z-other z-attribute-name z-multipart z-nix">command</span> <span class="z-keyword z-operator z-bind z-nix">=</span> <span class="z-string z-quoted z-double z-nix"><span class="z-punctuation z-definition z-string z-double z-start z-nix">&quot;</span><span class="z-markup z-italic"><span class="z-punctuation z-section z-embedded z-begin z-nix">${</span><span class="z-variable z-parameter z-name z-nix">startup</span><span class="z-punctuation z-section z-embedded z-end z-nix">}</span></span>/bin/startup.sh<span class="z-punctuation z-definition z-string z-double z-end z-nix">&quot;</span></span><span class="z-punctuation z-terminator z-bind z-nix">;</span> <span class="z-punctuation z-definition z-attrset z-nix">}</span> <span class="z-punctuation z-definition z-list z-nix">]</span><span class="z-invalid z-illegal">;</span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>PACT Tropical Moist Forest Accreditation Methodology</title><link href="https://anil.recoil.org/news/2023-pact-tmf-3" rel="alternate"></link><published>2024-08-29T01:00:00Z</published><updated>2024-08-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-pact-tmf-3</id><summary type="html"><p>We have just released the Tropical Moist Forest v2.1 specification, to follow up the now-expired <a href="https://anil.recoil.org/news/2023-pact-tmf-2">v2.0</a> from six months ago. The key updates are a new <a href="https://tinyurl.com/PACTTMFexplainer">high-level explainer</a>, as well as clarifiations for buffer zones and base tiles.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 26 Aug 2024</title><link href="https://ryan.freumh.org/2024-08-26.html" rel="alternate"></link><published>2024-08-26T01:00:00Z</published><updated>2024-08-26T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-08-26.html</id><summary type="html"><article>···dune exec -- bin/main.exe --repo /dev/shm/opam-giga-repository/packages 11.95s user 2.18s system 101% cpu 13.850 total+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Discovering `restic`</title><link href="https://mort.io/blog/restic-discovery/" rel="alternate"></link><published>2024-08-26T01:00:00Z</published><updated>2024-08-26T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/restic-discovery/</id><summary type="html"><p>I recently had cause to try to recover some files from my<a href="https://restic.net/"><code>restic</code></a> backups. These go back for over a year now, andwanted to recover. <code>restic find</code> purports to be able to do this by searching···</span><span class="z-source z-shell z-bash"> <span class="z-keyword z-control z-loop z-end z-shell">done</span>+bisection, which makes it a lot faster.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Nature Sustainability commentary on carbon and biodiversity credits</title><link href="https://anil.recoil.org/notes/nature-crossroads" rel="alternate"></link><published>2024-08-15T01:00:00Z</published><updated>2024-08-15T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/nature-crossroads</id><summary type="html"><p>Our <a href="https://anil.recoil.org/papers/2023-naturecredits">commentary on nature-based credits</a> has been published in <a href="https://www.nature.com/articles/s41893-024-01403-w">Naturelead expertly by my colleagues <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a> and <a class="contact" href="https://www.naturerecovery.ox.ac.uk/people/sophus-zu-ermgassen/">Sophus zu Ermgassen</a>.</p>···<p><a class="contact" href="https://www.naturerecovery.ox.ac.uk/people/sophus-zu-ermgassen/">Sophus zu Ermgassen</a> also gave a fantastic talk at the CCI ont his topic a few months ago that is a must watch for anyone working on carbon or biodiversity markets.</p>+<p>It's also not enough to &quot;just&quot; show that a given project is additional from a satellite perspective, but also that they do not result in justice and equity concerns for the local populations. Current reporting practices often require only superficial descriptions of how projects approach justice and equity issues, which are challenging to verify and lack consistency and transparency. So our group has also been working on <a href="https://4c.cst.cam.ac.uk/news/introducing-new-framework-assessing-justice-and-equity-impacts-nature-based-solutions-projects">a framework for assessing justice and equity impacts</a>, started by <a class="contact" href="https://uk.linkedin.com/in/miranda-lam-a088561b4">Miranda Lam</a>. I've also been working with <a class="contact" href="https://www.cst.cam.ac.uk/people/smc70">Sophie Chapman</a> and <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a> on the <a href="https://anil.recoil.org/ideas/legal-aspects-of-credits">Legal perspectives on integrity issues in forest carbon</a>. Please do get in touch if you have thoughts on this aspect of project development.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Debugging Electron apps</title><link href="https://mort.io/blog/electron-cli/" rel="alternate"></link><published>2024-08-14T01:00:00Z</published><updated>2024-08-14T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/electron-cli/</id><summary type="html"><p>Another short one, this time the magic flags to get debug output and access to<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">APPLICATION</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>enable-logging</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>devtools</span> <span class="z-punctuation z-separator z-continuation z-line z-shell">\</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>platform</span><span class="z-keyword z-operator z-assignment z-option z-shell">=</span>wayland<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>enable-features</span><span class="z-keyword z-operator z-assignment z-option z-shell">=</span>UseOzonePlatform<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>password-store</span><span class="z-keyword z-operator z-assignment z-option z-shell">=</span><span class="z-string z-quoted z-double z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">&quot;</span>gnome_libsecret<span class="z-punctuation z-definition z-string z-end z-shell">&quot;</span></span></span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 12 Aug 2024</title><link href="https://ryan.freumh.org/2024-08-12.html" rel="alternate"></link><published>2024-08-12T01:00:00Z</published><updated>2024-08-12T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-08-12.html</id><summary type="html"><article>···<p><span id="thu-para-3">0install solver for cargo packages</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 5 Aug 2024</title><link href="https://ryan.freumh.org/2024-08-05.html" rel="alternate"></link><published>2024-08-05T01:00:00Z</published><updated>2024-08-05T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-08-05.html</id><summary type="html"><article>···Beyond that, what’s implemented below is just a naive backtracking version which should in theory try all possible combinations of dependencies and versions to see if one works. The first resolution that works causes everything to bail out immediately and return success, and only if nothing works do we actually return an error up the stack.+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Building a Low-Powered NAS</title><link href="https://ryan.freumh.org/nas.html" rel="alternate"></link><published>2024-08-03T01:00:00Z</published><updated>2024-08-03T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/nas.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using wasm to locally explore geospatial layers</title><link href="https://anil.recoil.org/ideas/life-explorer-wasm" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/life-explorer-wasm</id><summary type="html"><h1>Using wasm to locally explore geospatial layers</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:sf729@cam.ac.uk">Sam Forbes</a>. It is co-supervised with <a class="contact" href="https://mynameismwd.org">Michael Dales</a>.</p><p>Some of my projects like <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a> or <a href="https://anil.recoil.org/projects/rsn">Remote Sensing of Nature</a> involve geospatial base maps with···+independent parts of the map.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Towards reproducible URLs with provenance</title><link href="https://anil.recoil.org/ideas/urls-with-provenance" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/urls-with-provenance</id><summary type="html"><h1>Towards reproducible URLs with provenance</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p><p>Vurls are an attempt to add versioning to URI resolution. For example, what should happen when we request <code>https://doi.org/10.1109/SASOW.2012.14</code> and how do we track the chain of events that leads to an answer coming back? The prototype <a href="https://github.com/quantifyearth/vurl">vurl</a> library written in OCaml outputs the following:</p>···<li><a href="https://github.com/quantifyearth/vurl">https://github.com/quantifyearth/vurl</a> has some prototype code.</li><li><a href="https://anil.recoil.org/papers/2024-uncertainty-cs">Uncertainty at scale: how CS hinders climate research</a> has relevant background reading on some of the types of diffs that would be useful in a geospatial context.</li><li><a href="https://anil.recoil.org/papers/2024-planetary-computing">Planetary computing for data-driven environmental policy-making</a> covers the broader data processing pipelines we need to integrate into.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Real-time mapping of changes in species extinction risks</title><link href="https://anil.recoil.org/ideas/mapping-species-extinction-risks" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/mapping-species-extinction-risks</id><summary type="html"><h1>Real-time mapping of changes in species extinction risks</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://emiliolr.github.io">Emilio Luz-Ricca</a>. It is co-supervised with <a class="contact" href="https://www.zoo.cam.ac.uk/directory/andrew-balmford">Andrew Balmford</a>.</p>···+additional anthropogenic threats on habitat quality on a per-species basis.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Preprint on Terracorder sensing now available</title><link href="https://anil.recoil.org/news/2024-terracorder-1" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-terracorder-1</id><summary type="html"><p>Our preprint on the Terracorder ground sensing platform I've been working with <a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> at Imperial on is now available on arXiv. It's a heady combination of ESP32 very low power hardware, combined with Q-learning to build cooperative networks of them that can run for long periods of time without wasting energy on redundant operations.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-terracorder.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Nature Sustainability article on carbon/biodiversity credits</title><link href="https://anil.recoil.org/news/2023-naturecredits-1" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-naturecredits-1</id><summary type="html"><p>Our commentary on nature-based credits has been published in <a href="https://www.nature.com/natsustain/">Nature Sustainability</a>. I wrote some <a href="https://anil.recoil.org/notes/nature-crossroads">thoughts</a> about it here as well.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-naturecredits.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mapping hunting risks for wild meat in protected areas</title><link href="https://anil.recoil.org/ideas/mapping-hunting-risks-for-wild-meat" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/mapping-hunting-risks-for-wild-meat</id><summary type="html"><h1>Mapping hunting risks for wild meat in protected areas</h1><p>This is an idea proposed in 2024 as a postdoctoral project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://charlesemogor.com">Charles Emogor</a>. It is co-supervised with <a class="contact" href="https://teamcore.seas.harvard.edu/tambe">Milind Tambe</a>.</p>···particularly from some of the newer base maps being developed in our <a href="https://anil.recoil.org/projects/life">Mapping LIFE on Earth</a>+project.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Implementing a higher-order choreographic language</title><link href="https://anil.recoil.org/ideas/choregraphic-programming-ocaml" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/choregraphic-programming-ocaml</id><summary type="html"><h1>Implementing a higher-order choreographic language</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/Rokcas">Rokas Urbonas</a>. It was co-supervised with <a class="contact" href="https://www.cst.cam.ac.uk/people/ds709">Dmirtij Szamozvancev</a>.</p>the <a href="https://dl.acm.org/doi/pdf/10.1145/3498684">Pirouette calculus</a>. This language was meant to make the notoriously···<li><a href="https://www.youtube.com/watch?v=KEkmcXVtFi0">Video</a> of his talk</li><li><a href="https://ocaml2024.hotcrp.com/doc/ocaml2024-paper17.pdf">PDF</a> of his writeup.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Foundation models for complex geospatial tasks</title><link href="https://anil.recoil.org/ideas/ssl-for-geospatial-tasks" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/ssl-for-geospatial-tasks</id><summary type="html"><h1>Foundation models for complex geospatial tasks</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://www.cst.cam.ac.uk/people/og309">Onkar Gulati</a>. It is co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and <a class="contact" href="https://coomeslab.org">David A Coomes</a>.</p>enables versatile <em>pretrained</em> models to leverage the complex relationships···+sensing instruments.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>An imperative, pure and effective specification language</title><link href="https://anil.recoil.org/ideas/effective-specification-languages" rel="alternate"></link><published>2024-08-01T01:00:00Z</published><updated>2024-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/effective-specification-languages</id><summary type="html"><h1>An imperative, pure and effective specification language</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:ms2922@cam.ac.uk">Max Smith</a>. It is co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>···+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Self Hosting - 2024 edition</title><link href="https://digitalflapjack.com/blog/hosting24/" rel="alternate"></link><published>2024-07-18T17:39:22Z</published><updated>2024-07-18T17:39:22Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/hosting24/</id><summary type="html"><p>Starting in around 2018 or so I decided to start reclaiming my Internet. Before then, as most people had I suspect, I'd drifted into relying on cloud services for just about everything I could possibly want, but by that year I think it'd become apparent to me that I didn't like relying on other companies as the main host of my digital legacy. There was no one thing, but it seems time and time again large internet service providers like to make sure I feel glad that I've done this by finding new ways to exploit their users' data.</p><p>That said, I'm somewhat pragmatic about it, as hosting all the things is hard and time consuming, and I really don't like doing system administration. There's nothing wrong with it, and I know many people who enjoy doing that, but it doesn't really bring me joy. So I've ended up with a mish-mash of things that I personally host locally, personally host on other servers, and let other people host for me.</p><p>Anyway, this page is an attempt to snapshot what I have done and why, along with what has worked and what needs work still. I do this both to help future me and as I occasionally see posts of people wondering if they should or shouldn't host their own stuff, and perhaps this'll help them decide if that's right for their needs or not.</p>···<p>As you can see, it's a very mixed bag of solutions I've come up with as I try to keep ownership of my Internet presence. I make not attempt to suggest any of this is optimal - more it's just a mix of pragmatism based on what I need versus how much effort I'm willing to put into it. But still, I see people talking about self hosting often, and so perhaps this'll both show you some options, and normalise the idea that it doesn't need to be perfect or all-or-nothing for you to make some inroads to taking back control of how you exist on the Internet. I don't use Azure or AWS for instance either, for a while I did, but I don't really operate at the scale where the complexity is justified - I'm not really dealing with a lot of traffic for most things. I don't deal with CDNs like Cloudflare either, as I'm not that big, and the few people who do want to see my websites probably don't care if it's a few seconds slower than it could be.</p>+<p>I'll perhaps try to do a follow on post in a couple of years to see how much, if anything has changed.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>New set of ideas for incoming students</title><link href="https://anil.recoil.org/notes/student-ideas" rel="alternate"></link><published>2024-07-15T01:00:00Z</published><updated>2024-07-15T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/student-ideas</id><summary type="html"><p>I've refreshed the set of project <a href="https://anil.recoil.org/ideas">ideas</a> for incoming <a href="https://www.cst.cam.ac.uk/teaching/part-ii">CST Part II</a> and <a href="https://www.cst.cam.ac.uk/teaching/masters">MPhil</a> and PhD student projects for 2024-2025.</p>+<p>These are not an exhaustive list, but intended to kickstart conversations for things we could work on together. Do get in touch if you're an incoming student and see something that grabs your interest.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 8 Jul 2024</title><link href="https://ryan.freumh.org/2024-07-08.html" rel="alternate"></link><published>2024-07-08T01:00:00Z</published><updated>2024-07-08T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-07-08.html</id><summary type="html"><article><span> Previous: <a href="2024-06-24.html">Mon 24 Jun 2024</a> </span>···/usr/bin/opam switch import &quot;/root/.opam/default/.opam-switch/backup/state-20240711150233.export&quot;</code></pre>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>COMPASS 2024 report on the CoRE stack RIC meeting</title><link href="https://anil.recoil.org/notes/compass2024-ric-tripreport" rel="alternate"></link><published>2024-07-08T01:00:00Z</published><updated>2024-07-08T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/compass2024-ric-tripreport</id><summary type="html"><p>This is a trip report of <a href="https://compass.acm.org">ACM COMPASS 2024</a> held in New Delhi, which had a novel track of <a href="https://compass.acm.org/research-impact-collaboratives/">&quot;Research to Impact Collaboratives&quot;</a> that drew me in. The general chair, <a href="https://www.cse.iitd.ac.in/~aseth/">Aadi Seth</a> wrote a fantastic book on &quot;<a href="https://www.cse.iitd.ac.in/~aseth/act.html">Technology and Disempowerment</a>&quot; a few years ago, and he organised one RIC session on the CoRE Stack -- a climate adaptation stack for rural communities. This was a must-visit for me as it is closely related to the work we've been doing on <a href="https://anil.recoil.org/projects/rsn">Remote Sensing of Nature</a> and <a href="https://anil.recoil.org/projects/plancomp">Planetary Computing</a>. The following notes are somewhat raw as they have only been lightly edited, but please refer to the more polished documents on the <a href="https://docs.google.com/document/d/1MJ-Nw_P3z6gI9rvh4OcjJmdZRE83D_OXedgEeDZDnm8/edit">agenda for ACM COMPASS RIC</a> and the overall <a href="https://core-stack.org">CoRE Stack</a> initiative on commoning technologies for resilience and equality</p><p>The conference itself was held at <a href="http://iiitd.ac.in/">IIIT-D</a> in New Delhi, right at the cusp of the monsoon season and after record-breaking temperatures. Luckily, as always, the hospitality and welcoming nature of New Delhi overrode all the climate discomfort!</p><p><figure class="image-center"><img alt="Arriving at the IIIT-D campus" class="content-image" src="https://anil.recoil.org/images/compass24/compass24-17.webp" title="Arriving at the IIIT-D campus" /><figcaption>Arriving at the IIIT-D campus</figcaption></figure>···<img alt="" class="content-image" src="https://anil.recoil.org/images/compass24/compass24-22.webp" title="Made it back to London in time to catch some tennis" />+</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Second preprint of the LIFE biodiversity metric available</title><link href="https://anil.recoil.org/news/2024-life-2" rel="alternate"></link><published>2024-07-01T01:00:00Z</published><updated>2024-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-life-2</id><summary type="html"><p>We have made an update to the <a href="https://anil.recoil.org/projects/life">LIFE</a> biodiversity metric based on reviewer feedback, and are very please that it has been accepted for publication early next year as part of a special issue from the Royal Society. Any comments would be most welcome before we submit the final proofs in a few months.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reinstalling `maestral`</title><link href="https://mort.io/blog/reinstall-maestral/" rel="alternate"></link><published>2024-06-28T01:00:00Z</published><updated>2024-06-28T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/reinstall-maestral/</id><summary type="html"><p>A short one this; just a crib of commands to redo <code>maestral</code> (unofficial<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-comment z-line z-number-sign z-shell"><span class="z-punctuation z-definition z-comment z-begin z-shell">#</span></span><span class="z-comment z-line z-number-sign z-shell"> remove existing configuration</span><span class="z-comment z-line z-number-sign z-shell"></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">rm</span></span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-meta z-group z-expansion z-tilde"><span class="z-variable z-language z-tilde z-shell">~</span></span>/.config/maestral/maestral.ini</span>···</span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">maestral</span></span><span class="z-meta z-function-call z-arguments z-shell"> stop</span> <span class="z-keyword z-operator z-logical z-and z-shell">&amp;&amp;</span> <span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">maestral</span></span><span class="z-meta z-function-call z-arguments z-shell"> start </span></span><span class="z-source z-shell z-bash"><span class="z-comment z-line z-number-sign z-shell"><span class="z-punctuation z-definition z-comment z-begin z-shell">#</span></span><span class="z-comment z-line z-number-sign z-shell"> if desired, add autocompletion for `maestral` in bash</span><span class="z-comment z-line z-number-sign z-shell"></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-support z-function z-double-brace z-begin z-shell">[[</span> <span class="z-meta z-group z-expansion z-command z-parens z-shell"><span class="z-punctuation z-definition z-variable z-shell">$</span><span class="z-punctuation z-section z-parens z-begin z-shell">(</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">which</span></span><span class="z-meta z-function-call z-arguments z-shell"> maestral <span class="z-constant z-numeric z-integer z-decimal z-file-descriptor z-shell">2</span><span class="z-keyword z-operator z-assignment z-redirection z-shell">&gt;</span>/dev/null</span><span class="z-punctuation z-section z-parens z-end z-shell">)</span></span> <span class="z-support z-function z-double-brace z-end z-shell">]]</span></span> <span class="z-keyword z-operator z-logical z-and z-shell">&amp;&amp;</span> <span class="z-meta z-function-call z-shell"><span class="z-support z-function z-source z-shell">source</span></span><span class="z-meta z-function-call z-arguments z-shell"> <span class="z-keyword z-operator z-assignment z-redirection z-process z-shell">&lt;</span><span class="z-punctuation z-section z-parens z-begin z-shell">(</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">maestral</span></span><span class="z-meta z-function-call z-arguments z-shell"> completion bash</span><span class="z-punctuation z-section z-parens z-end z-shell">)</span></span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Speaking at CCI workshop on conservation evidence</title><link href="https://anil.recoil.org/news/80795e06-ac75-4015-b178-3cfcbb233685-1" rel="alternate"></link><published>2024-06-25T01:00:00Z</published><updated>2024-06-25T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/80795e06-ac75-4015-b178-3cfcbb233685-1</id><summary type="html"><p><a class="contact" href="https://www.zoo.cam.ac.uk/directory/bill-sutherland">Bill Sutherland</a> organised a workshop at the CCI on how to bring about an <a href="https://about.conservationevidence.com/2024/07/12/the-next-steps-for-transforming-conservation-ideas-from-the-effectiveness-revolution-workshop/">Effectiveness Revolution</a> for transforming conservation into an evidence-driven discipline.</p><p>The aim was to discuss the &quot;Evidence Emergency&quot; (The Wildlife Trusts' term), the urgent need to embed evidence into decision-making and to create additional evidence to fill the considerable gaps in the evidence base, to improve conservation practice.</p><p>I gave a talk about our early results with the <a href="https://anil.recoil.org/papers/2024-ce-llm">conservation copilots</a> work.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 24 Jun 2024</title><link href="https://ryan.freumh.org/2024-06-24.html" rel="alternate"></link><published>2024-06-24T01:00:00Z</published><updated>2024-06-24T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-06-24.html</id><summary type="html"><article><span> Previous: <a href="2024-05-27.html">Mon 27 May 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Interview with AI@CAM about conservation</title><link href="https://anil.recoil.org/notes/aicam-interview-ce" rel="alternate"></link><published>2024-06-09T01:00:00Z</published><updated>2024-06-09T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/aicam-interview-ce</id><summary type="html"><p>I talked to the <a href="https://ai.cam.ac.uk">AI@Cam</a> team to discuss our <a href="https://anil.recoil.org/notes/aicn-in-aicam">AICN</a>project and what we're planning to do in the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> team.</p><p>Over the last two decades, the University of Cambridge-based project Conservation Evidence has screened more than 1.6 million scientific papers on conservation, as well as manually summarising 8,600+ studies relating to conservation actions. However, the current project’s work is limited by the specialised skills needed to screen and summarise relevant studies. It took more than 75 person years to manually curate the current database and only a few 100 papers can be added each year. By accelerating these efforts, AI has the potential to transform the impact this database has on biodiversity conservation.</p><p>What we’re aiming to do through the ai@cam project – bringing together an interdisciplinary team from across the fields of computer science, ecology, climate and conservation – is to build up models of the world that are really detailed and that can be queried by policy makers to help make informed decisions.</p><p><cite>-- <a href="https://ai.cam.ac.uk/blog/harnessing-the-power-of-ai-to-help-save-our-planet">AI@Cam</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Hyperspectrally identifying trees in tropical forests</title><link href="https://anil.recoil.org/news/2024-hyper-tropical-mapping-1" rel="alternate"></link><published>2024-06-01T01:00:00Z</published><updated>2024-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-hyper-tropical-mapping-1</id><summary type="html"><p>A preprint on using <a href="https://en.wikipedia.org/wiki/Hyperspectral_imaging">hyperspectral sensors</a> to perform tree species identification across the tropics is now available on bioarxiv.</p><p>This study introduces a new approach for mapping tree species linking a multi-temporal implementation of the CNN method detectree2 to segment tree-crowns from aerial photographs to machine learning classifiers to identify species from hyperspectral data.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-hyper-tropical-mapping.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 27 May 2024</title><link href="https://ryan.freumh.org/2024-05-27.html" rel="alternate"></link><published>2024-05-27T01:00:00Z</published><updated>2024-05-27T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-05-27.html</id><summary type="html"><article><span> Previous: <a href="2024-05-20.html">Mon 20 May 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Programming for the Planet</title><link href="https://anil.recoil.org/news/d592bf17-c835-435f-9469-f0f65e926975-1" rel="alternate"></link><published>2024-05-27T01:00:00Z</published><updated>2024-05-27T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/d592bf17-c835-435f-9469-f0f65e926975-1</id><summary type="html"><p>I was invited by Mary Sheeran to deliver a keynoted at <a href="https://www.lambdadays.org/">Lambda Days</a>, and I decided to go along to talk about my work on <a href="https://anil.recoil.org/videos/981c00b5-32c0-4cac-a387-6c945dfa9934">Programming for the Planet</a>. The conference was a really vibrant crowd and I would definitely go along in future years. It's best summarised via an <a href="https://www.youtube.com/watch?v=Kao-LguvYDU&amp;list=PLvL2NEhYV4ZtX2TurK0BIlKD_cHct0rSs">interview video</a> they took of all the speakers.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 20 May 2024</title><link href="https://ryan.freumh.org/2024-05-20.html" rel="alternate"></link><published>2024-05-20T01:00:00Z</published><updated>2024-05-20T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-05-20.html</id><summary type="html"><article><span> Previous: <a href="2024-05-13.html">Mon 13 May 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 13 May 2024</title><link href="https://ryan.freumh.org/2024-05-13.html" rel="alternate"></link><published>2024-05-13T01:00:00Z</published><updated>2024-05-13T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-05-13.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 6 May 2024</title><link href="https://ryan.freumh.org/2024-05-06.html" rel="alternate"></link><published>2024-05-06T01:00:00Z</published><updated>2024-05-06T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-05-06.html</id><summary type="html"><article><span> Previous: <a href="2024-04-29.html">Mon 29 Apr 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Quantifying the impact of the food we eat on species extinctions</title><link href="https://anil.recoil.org/news/2024-food-life-1" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-food-life-1</id><summary type="html"><p>Submitted preprint on quantifying the biodiversity cost of global food consumption for peer review</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-food-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Predicting species using machine learning at CCAI</title><link href="https://anil.recoil.org/news/2024-sdm-sa-1" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-sdm-sa-1</id><summary type="html"><p><a class="contact" href="https://github.com/emorris7">Emily Morris</a> did some great MPhil work here in her Masters on using <a href="https://anil.recoil.org/ideas/sdms-with-cnns">CNNs with satellite data</a> to do species predictions in South Africa better. She presented it at the <a href="https://www.climatechange.ai/events/iclr2024">ICLR CCAI</a> workshop in Vienna, and is now off to do a PhD at Oxford!</p><p>Species distribution models are crucial tools that predict species locations by interpolating observed field data with environmental information. We develop an improved, scalable method for species distribution modelling by proposing a dataset pipeline that incorporates global remote sensing imagery, land use classification data, environmental variables, and observation data, and utilising this with CNN models to predict species presence at higher spatial and temporal resolutions than well-established species distribution modelling methods.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-sdm-sa.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Low-latency wayland compositor in OCaml</title><link href="https://anil.recoil.org/ideas/wayland" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/wayland</id><summary type="html"><h1>Low-latency wayland compositor in OCaml</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:tt492@cam.ac.uk">Tom Thorogood</a>. It is co-supervised with <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>.</p>···<p><a href="https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c">https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/tinywl/tinywl.c</a></p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-5">↩︎︎</a></span></li><li id="fn-6"><p><a href="https://github.com/talex5/ocaml-wayland">https://github.com/talex5/ocaml-wayland</a></p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-6">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Diffusion models for terrestrial predictions about land use change</title><link href="https://anil.recoil.org/ideas/diffusion-model-satellites" rel="alternate"></link><published>2024-05-01T01:00:00Z</published><updated>2024-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/diffusion-model-satellites</id><summary type="html"><h1>Diffusion models for terrestrial predictions about land use change</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p>···<p>&quot;<a href="https://arxiv.org/abs/2405.03150">Video Diffusion Models: A Survey</a>&quot; (May 2024), <a href="https://video-diffusion.github.io">https://video-diffusion.github.io</a>.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-1"><p>&quot;<a href="https://arxiv.org/abs/2312.03606">DiffusionSat: A Generative Foundation Model for Satellite Imagery</a>&quot; (Dec 2023)</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 29 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-29.html" rel="alternate"></link><published>2024-04-29T01:00:00Z</published><updated>2024-04-29T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-04-29.html</id><summary type="html"><article><span> Previous: <a href="2024-04-22.html">Mon 22 Apr 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 22 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-22.html" rel="alternate"></link><published>2024-04-22T01:00:00Z</published><updated>2024-04-22T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-04-22.html</id><summary type="html"><article><span> Previous: <a href="2024-04-15.html">Mon 15 Apr 2024</a> </span>···<p><span id="para-1">I also added a CalDAV server to Eilean.</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Green Urban Equity in the UK</title><link href="https://ancazugo.github.io/python/carto/uk-3-30-300.html" rel="alternate"></link><published>2024-04-19T01:00:00Z</published><updated>2024-04-19T01:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/python/carto/uk-3-30-300</id><summary type="html"><p>This is part of my presentation at EGU24 in Vienna that was about mapping green spaces in the UK using the 3-30-300 rule. You can find out more about the abstract <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html">here</a>.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Mon 15 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-15.html" rel="alternate"></link><published>2024-04-15T01:00:00Z</published><updated>2024-04-15T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-04-15.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 8 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-08.html" rel="alternate"></link><published>2024-04-08T01:00:00Z</published><updated>2024-04-08T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-04-08.html</id><summary type="html"><article>···<p><span id="thu-para-1">NB <a href="https://github.com/mmaker/ocaml-letsencrypt">ocaml-letsencrypt</a>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Teaching 1A Security and Software Engineering</title><link href="https://anil.recoil.org/notes/swseng" rel="alternate"></link><published>2024-04-04T01:00:00Z</published><updated>2024-04-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/swseng</id><summary type="html"><p>We're still reeling from the shocking and unexpected <a href="https://www.cst.cam.ac.uk/news/ross-anderson">passing of Ross Anderson</a>last week. You can read a lovely <a href="https://raintown.org/ross_anderson/">tribute</a> to him by <a class="contact" href="https://raintown.org">Satnam Singh</a>, and I still getting my thoughts together on all the guidance, advice and prods in the right direction that Ross has given me over the years.</p>+<p>In pragmatic news, I'll be emergency lecturing part of Ross' 1A <a href="https://www.cl.cam.ac.uk/teaching/2324/SWSecEng/">Software and Security Engineering</a> course here at Cambridge, along with my colleagues Martin, Alastair, Mort and Rob who have all stepped up at short notice. I have absolutely no idea how we'll live up to Ross' standard, but we'll do our very best in his memory!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Global, robust and comparable digital carbon assets</title><link href="https://anil.recoil.org/news/2024-cc-blockchain-1" rel="alternate"></link><published>2024-04-04T01:00:00Z</published><updated>2024-04-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-cc-blockchain-1</id><summary type="html"><p>Paper on smart contracts for carbon credits at <a href="http://icbc2024.ieee-icbc.org">ICBC 2024</a> in Dublin</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-cc-blockchain.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 1 Apr 2024</title><link href="https://ryan.freumh.org/2024-04-01.html" rel="alternate"></link><published>2024-04-01T01:00:00Z</published><updated>2024-04-01T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-04-01.html</id><summary type="html"><article><span> Previous: <a href="2024-03-25.html">Mon 25 Mar 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Rolling out a new site design</title><link href="https://anil.recoil.org/notes/bushel-step1" rel="alternate"></link><published>2024-04-01T01:00:00Z</published><updated>2024-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/bushel-step1</id><summary type="html"><p>I've done a redesign of my site after about 20 years since the last one <a href="https://anil.recoil.org/notes/opening-anil-recoil-org">back in 2003</a>.The site design is based on my upcoming Bushel content manager, which I'll post about more once I get the data model in place and try it out properly using this site as a guinea pig.</p>+<p><a class="contact" href="https://nick.recoil.org">Nick Ludlam</a> also refreshed <a href="https://nick.recoil.org">his website</a> since we were chatting about how outdated our web presences were, and he also put up a main <a href="https://recoil.org">recoil.org</a> page for the main server.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 25 Mar 2024</title><link href="https://ryan.freumh.org/2024-03-25.html" rel="alternate"></link><published>2024-03-25T00:00:00Z</published><updated>2024-03-25T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-03-25.html</id><summary type="html"><article><span> Previous: <a href="2024-03-18.html">Mon 18 Mar 2024</a> </span>···probably modifying <a href="https://github.com/lazamar/nix-package-versions">https://github.com/lazamar/nix-package-versions</a>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 18 Mar 2024</title><link href="https://ryan.freumh.org/2024-03-18.html" rel="alternate"></link><published>2024-03-18T00:00:00Z</published><updated>2024-03-18T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-03-18.html</id><summary type="html"><article><span> Previous: <a href="2024-03-11.html">Mon 11 Mar 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 11 Mar 2024</title><link href="https://ryan.freumh.org/2024-03-11.html" rel="alternate"></link><published>2024-03-11T00:00:00Z</published><updated>2024-03-11T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-03-11.html</id><summary type="html"><article><span> Previous: <a href="2024-02-26.html">Mon 26 Feb 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Preprint available on insuring against variability of NbS</title><link href="https://anil.recoil.org/news/2024-nbs-risk-1" rel="alternate"></link><published>2024-03-01T00:00:00Z</published><updated>2024-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-nbs-risk-1</id><summary type="html"><p>A new preprint is available on our work on ex-ante pricing models for nature-based solutions. It is currently under review, so any feedback is most welcome!</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-nbs-risk.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications</title><link href="https://anil.recoil.org/news/2024-green-urban-eq-1" rel="alternate"></link><published>2024-03-01T00:00:00Z</published><updated>2024-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-green-urban-eq-1</id><summary type="html"><p>Abstract on urban biodiversity and human health at <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html">EGU 24</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-green-urban-eq.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A Case for Planetary Computing</title><link href="https://anil.recoil.org/news/2024-planetary-computing-2" rel="alternate"></link><published>2024-03-01T00:00:00Z</published><updated>2024-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-planetary-computing-2</id><summary type="html"><p>Revision of planetary computing preprint</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-planetary-computing.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 26 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-26.html" rel="alternate"></link><published>2024-02-26T00:00:00Z</published><updated>2024-02-26T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-02-26.html</id><summary type="html"><article><span> Previous: <a href="2024-02-19.html">Mon 19 Feb 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 19 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-19.html" rel="alternate"></link><published>2024-02-19T00:00:00Z</published><updated>2024-02-19T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-02-19.html</id><summary type="html"><article><span> Previous: <a href="2024-02-12.html">Mon 12 Feb 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>FOSDEM</title><link href="https://ryan.freumh.org/fosdem.html" rel="alternate"></link><published>2024-02-13T00:00:00Z</published><updated>2024-02-13T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/fosdem.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 12 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-12.html" rel="alternate"></link><published>2024-02-12T00:00:00Z</published><updated>2024-02-12T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-02-12.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 5 Feb 2024</title><link href="https://ryan.freumh.org/2024-02-05.html" rel="alternate"></link><published>2024-02-05T00:00:00Z</published><updated>2024-02-05T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-02-05.html</id><summary type="html"><article><span> Previous: <a href="2024-01-29.html">Mon 29 Jan 2024</a> </span>···<p><span id="fosdem-para-0">I attended FOSDEM and wrote up some notes <a href="./fosdem.html">here</a>!</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Selected in the AI@CAM challenge for conservation research</title><link href="https://anil.recoil.org/notes/aicn-in-aicam" rel="alternate"></link><published>2024-02-05T00:00:00Z</published><updated>2024-02-05T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/aicn-in-aicam</id><summary type="html"><p>We won the <a href="https://www.cam.ac.uk/stories/AI-deas-launch">AI@CAM challenge</a> that was sent outOur project on using <a href="https://www.cam.ac.uk/stories/AI-deas-launch#section-9RKgEyI2LZ">AI for climate and nature</a>···<p>This project is a collaboration between lots of friendly people at Cambridge Zero, the Cambridge Conservation Initiative, Conservation Evidence, the Institute for Computing for Climate Science, Conservation Research Institute, Centre for Landscape Regeneration, <a href="https://anil.recoil.org/projects/4c">Cambridge Centre for Carbon Credits</a> and Cambridge Centre for Earth Observation.</p><p><figure class="image-center"><img alt="Team AICN in the CCI building, Feb 2024" class="content-image" src="https://anil.recoil.org/images/aicn-team-feb24.webp" title="Team AICN in the CCI building, Feb 2024" /><figcaption>Team AICN in the CCI building, Feb 2024</figcaption></figure>+</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Uncertainty at scale: how CS hinders climate research</title><link href="https://anil.recoil.org/news/2024-uncertainty-cs-1" rel="alternate"></link><published>2024-02-01T00:00:00Z</published><updated>2024-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-uncertainty-cs-1</id><summary type="html"><p>Paper on uncertainty in climate science in <a href="https://undonecs.sciencesconf.org">Undone CS</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-uncertainty-cs.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 29 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-29.html" rel="alternate"></link><published>2024-01-29T00:00:00Z</published><updated>2024-01-29T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-01-29.html</id><summary type="html"><article><span> Previous: <a href="2024-01-22.html">Mon 22 Jan 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 22 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-22.html" rel="alternate"></link><published>2024-01-22T00:00:00Z</published><updated>2024-01-22T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-01-22.html</id><summary type="html"><article><span> Previous: <a href="2024-01-15.html">Mon 15 Jan 2024</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 15 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-15.html" rel="alternate"></link><published>2024-01-15T00:00:00Z</published><updated>2024-01-15T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-01-15.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 8 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-08.html" rel="alternate"></link><published>2024-01-08T00:00:00Z</published><updated>2024-01-08T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-01-08.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Tiny Code Christmas - part 2: learning OCaml and that demos are mostly functional</title><link href="https://digitalflapjack.com/blog/tcc-part2/" rel="alternate"></link><published>2024-01-03T09:57:06Z</published><updated>2024-01-03T09:57:06Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/tcc-part2/</id><summary type="html"><p>This post is a follow on to the previous <a href="/blog/tcc/">part 1 about Tiny Code Christmas 2022</a>, and is about what I did for TCC 2023. In order to get more info on what TCC is and why it's a fun thing to do, I recommend you start there, but if you're just interested in me messing around with <a href="https://ocaml.org/">OCaml</a>, then you're in the right place.</p><p>There were two things that motivated me to tackle this years TCC in the OCaml language. Firstly, a bunch of my colleagues at work use OCaml, and indeed work on language, and so there's been a bunch of encouragement from them that I should join in. However, I find I have two modes when it comes to working with programming languages: I can either work on a problem I'm not familiar with in a language I'm comfortable with, or I can do the inverse and tackle problems that I'm comfortable with in a language I'm having to pick up as I go, but I can't do both. Given my current work requires that I spend my time implementing ecological things and trying to do new things from a computer science perspective, I've just been leaning on my go to set of languages: Go, Python, and occasionally Swift.</p><p>In a parallel thread, a couple of months ago I was at the return of <a href="https://twelve.barcamplondon.org">London BarCamp</a>, and I happened to bump into <a href="https://www.jonathanhogg.com">Jonathan Hogg</a>, someone with whom I used to share an office when I was doing my PhD. Jonathan was giving a talk, so I went to see what he was currently up to, and learned about <a href="https://github.com/jonathanhogg/flitter">Flitter</a>, a purely functional programming language that he'd created to help him program visuals for live performances. I had a brief play with this after, as it seemed very cool, but a lack of free time eventually meant I didn't get far. But I liked the idea of having a declarative was to describe a light show rather than a long list of do this then that.</p>···<p>So, as a way of learning a new language, TCC is a pretty good route. I wrote a little bit of OCaml every day for the better part of a month, and slowly my code got more idiomatic thanks to the guidance of my colleagues like the ever patient <a href="https://patrick.sirref.org">Patrick</a>. I was pleased to see that Jonathan also joined in TCC in the end with Flitter, to give another take on how functional some of these are, given Flitter is a must more pure functional language that OCaml (an advantage of being domain specific).</p><p>Do I know OCaml inside out yet? Certainly not, but I feel I've got enough familiarity that I might try using it in lieu of Go for a few projects this year. I know that I'm not yet an OCaml natural, as I stick to the comfort of explicit type declarations rather than letting the compiler use type inference for example, but I do have colleagues to help me get over that in the coming year.</p><p>I'm going to use the follow on challenge of Genuary, a generative art prompt a day for January, to try take my OCaml fantasy retro computer library to a sort of completed point so that I can draw a line under it and feel I have a suitable conclusion, and thing should anyone else want to try TCC in OCaml in the future can pick up and use without having to worry about both suitable abstractions, graphics libraries, and doing TCC in a language not many use.</p>+<p>I do want to give a quick shout out once again to the <a href="https://lovebyte.party">LoveByte</a> community - not only is TCC a nicely rounded set of challenges that make for a great little puzzle a day, both the organisers and discord we very welcoming to the idea of someone making their own thing of it rather than just using one of the traditional retro/fantasy platforms. At no point did anyone object to OCaml being thrown into the usual mix of Lua solutions - it was accepted as a fun variation, and my solutions (all of which are <a href="https://mynameismwd.org/tags/tcc/">up on my personal blog here</a>) made it into the end of TCC live stream, which was nice. A great community of people interested in learning and helping others have fun.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Tiny Code Christmas - part 1: making coding fun through constraints and community</title><link href="https://digitalflapjack.com/blog/tcc/" rel="alternate"></link><published>2024-01-02T13:00:56Z</published><updated>2024-01-02T13:00:56Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/tcc/</id><summary type="html"><p>Normally, as someone who codes for a living, xmas is a time for me to down tools and step away from the computer for a bit, spent time with family, spend some time in the <a href="https://electricflapjack.com/">workshop</a> and generally not stare at a computer so much. But this last two years I've had a lot of fun doing some small amounts of coding for fun. In this and the next post, I'm going to go through what got me doing this, what I learned from it, and why I recommend it to others. But the TL;DR is along the lines of: small regular constrained challenges, community, and exploration.</p>···<p>By the end I had items to collect, simple NPCs, mountains, and sorted occlusion problems. Enough to satisfy my itch before I had to turn my coding attention back to work. One day I'd like to pick this back up and do something with it - I have an idea for building a community based little open world game - but there's no urgency, and it's parked in a nice place.</p><p>As you can see if you've made it this far, TCC 2022 wasn't just fun for me because it was a coding thing and I'm a nerd, rather it was fun as I promised me a way to have some fun without it being a big drain on my holidays, let me work with a community of nice people via the LoveByte Discord, and inspired me to try a few things afterwards based on that which I'd not otherwise have tried. The barrier to entry to TCC is very low - TIC80 can be downloaded for free, Lua is a super easy language to learn, and the Discord is there if you want to chat to people. Best yet, the challenges are just there, you don't need it to be christmas to take part, you can do so at your own leisure.</p>+<p>In the next post, I'll talk about what I did for TCC 2023, where I took it in quite a different direction.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Mon 1 Jan 2024</title><link href="https://ryan.freumh.org/2024-01-01.html" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2024-01-01.html</id><summary type="html"><article><span> Previous: <a href="2023-12-25.html">Mon 25 Dec 2023</a> </span>···mbsync/goimapnotify/aerc/mu/msmtp/gpgp/ldapsearch <a href="https://github.com/RyanGibb/nixos/tree/7f303f5ff5283d31aa98f88574bfc85f4634afed/modules/personal/home/mail">nix</a>.</li>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Spatial and multi-modal extraction from conservation literature</title><link href="https://anil.recoil.org/ideas/spatial-summarisation-of-llms" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/spatial-summarisation-of-llms</id><summary type="html"><h1>Spatial and multi-modal extraction from conservation literature</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>, <a class="contact" href="https://profiles.imperial.ac.uk/a.christie">Alec Christie</a> and <a class="contact" href="https://www.zoo.cam.ac.uk/directory/bill-sutherland">Bill Sutherland</a>.</p><p>The <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> database contains information on numerous conservation actions and···<li>The <a href="https://docs.ragas.io/en/stable/index.html">Ragas framework</a> for RAG evaluation</li><li><a href="https://arxiv.org/abs/2406.02524v2">CheckEmbed: Effective Verification of LLM Solutions to Open Ended Tasks</a>, arxiv:2406.02524v2, June 2024</li><li><a href="https://arxiv.org/abs/2210.00045">Calibrating Sequence Likelihood Improves Conditional Language Generation</a>, arxiv:2210.00045, September 2000</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Privacy preserving emissions disclosure techniques</title><link href="https://anil.recoil.org/ideas/tardis" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/tardis</id><summary type="html"><h1>Privacy preserving emissions disclosure techniques</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://www.cst.cam.ac.uk/people/psjm3">Jessica Man</a>. It is co-supervised with <a class="contact" href="https://martin.kleppmann.com">Martin Kleppmann</a>.</p>···+<p>We published a workshop paper on this topic in <a href="https://anil.recoil.org/papers/2024-loco-emissions">Emission Impossible: privacy-preserving carbon emissions claims</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Low-power sensing infrastructure for biodiversity</title><link href="https://anil.recoil.org/ideas/recording-nature" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/recording-nature</id><summary type="html"><h1>Low-power sensing infrastructure for biodiversity</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a>. It is co-supervised with <a class="contact" href="https://haddadi.github.io/">Hamed Haddadi</a>.</p>···+<a href="https://anil.recoil.org/papers/2024-terracorder">Terracorder: Sense Long and Prosper</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Legal perspectives on integrity issues in forest carbon</title><link href="https://anil.recoil.org/ideas/legal-aspects-of-credits" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/legal-aspects-of-credits</id><summary type="html"><h1>Legal perspectives on integrity issues in forest carbon</h1><p>This is an idea proposed in 2024 as a postdoctoral project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.cst.cam.ac.uk/people/smc70">Sophie Chapman</a>. It was co-supervised with <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a>.</p>but there are integrity issues on the supply side.<sup><a class="fn-label" href="https://anil.recoil.org/#fn-1" id="ref-1-fn-1">[1]</a></sup>···<p>See the note on <a href="https://anil.recoil.org/notes/nature-crossroads">Nature Sustainability commentary on carbon and biodiversity credits</a></p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-1">↩︎︎</a></span></li><li id="fn-2"><p>See the <a href="https://anil.recoil.org/projects/4c">Trusted Carbon Credits</a> project and related papers.</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Generating chunk-free embeddings for LLMs</title><link href="https://anil.recoil.org/ideas/chunk-free-embeddings" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/chunk-free-embeddings</id><summary type="html"><h1>Generating chunk-free embeddings for LLMs</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:mj651@cam.ac.uk">Mark Jacobsen</a>. It is co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p>···+for separate summarization and embedding processes.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Evaluating RAG pipelines for conservation evidence</title><link href="https://anil.recoil.org/ideas/rag-evaluation-for-ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/rag-evaluation-for-ce</id><summary type="html"><h1>Evaluating RAG pipelines for conservation evidence</h1><p>This is an idea proposed in 2024 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="mailto:ri301@cam.ac.uk">Radhika Iyer</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in finding and synthesising evidence for conservation interventions. Once we have this evidence, it needs to be synthesised into a form that can be used to inform policy and practice via natural language query interfaces. One way to do this is to use a <a href="https://anil.recoil.org/14768">RAG (Retrieval Augmented Generation)</a> pipeline, which can automatically retrieve relevant information from a large corpus of documents, analyse it to extract key information relevant to CE, and generate a summary of the key findings.</p><p>This project involved involve evaluating the performance of RAG pipelines for conservation evidence, comparing different models, configurations and benchmark sets, and identifying areas for improvement. The goal is to develop a set of best practices for using RAG pipelines in the context of conservation evidence, and to make recommendations for future work in this area.</p>···<li><a href="https://arxiv.org/html/2405.13622v1">Automated Evaluation of Retrieval-Augmented Language Models with Task-Specific Exam Generation</a>, arXiv:2405.13622v1, May 2024</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Effective geospatial code in OCaml</title><link href="https://anil.recoil.org/ideas/effective-geospatial-code" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/effective-geospatial-code</id><summary type="html"><h1>Effective geospatial code in OCaml</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:gp528@cam.ac.uk">George Pool</a>. It is co-supervised with <a class="contact" href="https://mynameismwd.org">Michael Dales</a> and <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p><p>Geospatial data processing is a critical component of many scientific and engineering workflows, from environmental monitoring to urban planning. However, writing geospatial code that scales to multiple cores and makes best use of available memory can be challenging due to the scale of the data involved. To deal with this, we have been developing some domain-specific tools to improve the state of affairs.</p><p><a href="https://github.com/quantifyearth/yirgacheffe">Yirgacheffe</a> is a wrapper to the GDAL library that provides high-level Python APIs that take care of figuring out if datasets overlap, and if vector layers need to be rasterised, and manages memory efficiently for large layers. There is only one problem: we would like to write similar code to this, but in a high level functional language rather than an imperative one!</p>···<li><a href="https://anil.recoil.org/papers/2024-planetary-computing">Planetary computing for data-driven environmental policy-making</a> covers the data processing pipelines we need to integrate into.</li><li><a href="https://anil.recoil.org/papers/2021-pldi-retroeff">Retrofitting effect handlers onto OCaml</a>, PLDI 2021 describes how the effect system in OCaml works.</li><li><a href="https://github.com/ocaml-multicore/eio">EIO</a> is the high-performance direct-style IO library we have been developing for OCaml.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Deep learning for decomposing sound into vector audio</title><link href="https://anil.recoil.org/ideas/decomposing-audio-with-dl" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/decomposing-audio-with-dl</id><summary type="html"><h1>Deep learning for decomposing sound into vector audio</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://pure.qub.ac.uk/en/persons/trevor-agus">Trevor Agus</a>.</p>···<p>Agus, T.R., et al., <a href="https://pubmed.ncbi.nlm.nih.gov/22559384/">Fast recognition of musical sounds based on timbre</a>. J Acoust Soc Am, 2012. 131(5): p. 4124-33.</p><span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-2">↩︎︎</a></span></li><li id="fn-3"><p>Famularo, R.L., et al., <a href="https://www.arxiv.org/abs/2409.08997">Biomimetic frontend for differentiable audio processing</a>. [pre-print], 2024.</p>+<span><a class="fn-label" href="https://anil.recoil.org/#ref-1-fn-3">↩︎︎</a></span></li></ol></section></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Crawling grey literature for conservation evidence</title><link href="https://anil.recoil.org/ideas/grey-lit-crawl" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/grey-lit-crawl</id><summary type="html"><h1>Crawling grey literature for conservation evidence</h1><p>This is an idea proposed in 2024 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Shrey Biswas</a> and <a class="contact" href="https://github.com/Kacper-M-Michalik">Kacper Michalik</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in finding and synthesising evidence for conservation interventions. Much of this evidence is published in academic journals, but there is a large body of <a href="https://en.wikipedia.org/wiki/Grey_literature">grey literature</a> that is not indexed in academic databases. This includes reports from NGOs, government agencies, and other organisations that are not peer-reviewed, but can still contain valuable information.</p><p>This project involved developing a web crawler to search for grey literature on conservation interventions, tracking the provenance and license information, and extracting relevant information from these documents. The goal is to make this information more accessible to researchers and practitioners in the field of conservation.</p>+<p><strong>Status:</strong> Paper in preparation, contact me for more details about followups.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Conservation Evidence Copilots</title><link href="https://anil.recoil.org/projects/ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/ce</id><summary type="html"><div><p><p>The <a href="https://conservationevidence.com">Conservation Evidence</a> team at the University···<p>The collaboration originally began in 2022 as part of the Computer Science <a href="https://www.cst.cam.ac.uk/teaching/part-ib/group-projects">1B group projects</a>, when <a class="contact" href="https://www.zoo.cam.ac.uk/directory/bill-sutherland">Bill Sutherland</a>, <a class="contact" href="https://samreynolds.org/">Sam Reynolds</a> and <a class="contact" href="https://profiles.imperial.ac.uk/a.christie">Alec Christie</a> from Zoology proposed a group project related to CE. A team of undergraduate students (including <a class="contact" href="https://github.com/CaoJamie">Jamie Cao</a>) trained an ML model to facilitate searching for papers and indexing relevant articles by species and habitat. After the group project completed with encouraging results, <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and I joined the collaboration and -- with help from the Cambridge <a href="https://osc.cam.ac.uk">Office for Scholarly Communication</a> -- built up a comprehensive (and legal!) corpus of millions of academic papers related to conservation evidence.</p><p>In the summer of 2024 and beyond, we are performing the first cut of training the classifiers across this corpus, and building out an LLM-based co-pilot that can assist human experts. We were joined in the summer of 2024 by three CST undergraduates: <a class="contact" href="mailto:ri301@cam.ac.uk">Radhika Iyer</a>, <a class="contact" href="https://anil.recoil.org/">Shrey Biswas</a> and <a class="contact" href="https://github.com/Kacper-M-Michalik">Kacper Michalik</a> who are building out various elements of the system.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Composable diffing for heterogenous file formats</title><link href="https://anil.recoil.org/ideas/functional-diffs" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/functional-diffs</id><summary type="html"><h1>Composable diffing for heterogenous file formats</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p><p>When dealing with large scale geospatial data, we also have to deal with a variety of file formats, such as CSV, JSON, GeoJSON, or GeoTIFFs, etc. Each of these file formats has its own structure and semantics, and it is often necessary to compare and merge data across different file formats. The conventional solution with source code would be to use a tool such as Git to compare and merge data across different file formats. However, this approach is not always feasible, as it requires the data to be in a text-based format and the data to be structured in a way that can be compared line by line.</p><p>This project explores the design of a composable diffing specification that can compare and merge data across heterogenous file formats. The project will involve designing a domain-specific language for specifying the diffing rules, and implementing a prototype tool that can compare and merge data across different file formats. Crucially, the tool should be composable, meaning that it should be possible to combine different diffing rules to compare and merge data across different file formats.</p>···<li><a href="https://anil.recoil.org/papers/2024-planetary-computing">Planetary computing for data-driven environmental policy-making</a> covers the broader data processing pipelines we need to integrate into.</li><li><em><a href="http://eelco.lempsink.nl/thesis.pdf">&quot;Generic type-safe diff and patch for families of datatypes&quot;</a>, Eelco Lempsink (2009)</em> is a principled library in Haskell for constructing type safe diff and patch functions using GADTs.</li><li><em><a href="https://gioele.io/p/doceng2018/doceng2018-diffi.pdf">diffi: diff improved; a preview</a>, Gioele Barabucci (2018)</em> is a comparison tool whose primary goal is to describe the differences between the content of two documents regardless of their formats.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building bigraphs of the real world</title><link href="https://anil.recoil.org/ideas/bigraphs-real-world" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/bigraphs-real-world</id><summary type="html"><h1>Building bigraphs of the real world</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:ra652@cam.ac.uk">Roy Ang</a>. It is co-supervised with <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>.</p>···+proximity.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Assessing mangrove literature for conservation evidence</title><link href="https://anil.recoil.org/ideas/mangrove-literature-for-ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/mangrove-literature-for-ce</id><summary type="html"><h1>Assessing mangrove literature for conservation evidence</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is <span class="idea-available">available</span> for being worked on. It may be co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a> and <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-thomas-worthington">Tom Worthington</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in finding and synthesising evidence for conservation interventions. Mangrove forests are one of the most threatened ecosystems in the world, and there is a large body of literature on the topic. However, this literature is spread across a wide range of sources, including academic journals, reports, and grey literature, and it can be difficult to identify and synthesise the key findings. Moreover, there is a need to assess the quality of the evidence, perhaps from remote sensing data or field studies, to inform policy and practice.</p>+<p>At the Cambridge Conservation Initiative, there are in-house experts such as <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-thomas-worthington">Tom Worthington</a> developing a platform to integrate evidence on mangrove preservation and restoration. This project will involve assessing the literature found by this project to identify key sources, extract relevant information, and evaluate the quality of the resulting evidence. The goal is to develop a set of best practices for using mangrove literature in the context of conservation evidence, to validate it from the databases collated by domain experts, and to make recommendations for future work in this area.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Accurate summarisation of threats for conservation evidence literature</title><link href="https://anil.recoil.org/ideas/accurate-summarisation-for-ce" rel="alternate"></link><published>2024-01-01T00:00:00Z</published><updated>2024-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/accurate-summarisation-for-ce</id><summary type="html"><h1>Accurate summarisation of threats for conservation evidence literature</h1><p>This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="mailto:kh807@cam.ac.uk">Kittson Hamill</a>. It is co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>At the <a href="https://anil.recoil.org/projects/ce">Conservation Evidence Copilots</a> project, we are interested in constructing a taxonomy of threats···<li>The <a href="https://docs.ragas.io/en/stable/index.html">Ragas framework</a> for RAG evaluation</li><li><a href="https://arxiv.org/abs/2406.02524v2">CheckEmbed: Effective Verification of LLM Solutions to Open Ended Tasks</a>, arxiv:2406.02524v2, June 2024</li><li><a href="https://arxiv.org/abs/2210.00045">Calibrating Sequence Likelihood Improves Conditional Language Generation</a>, arxiv:2210.00045, September 2000</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 25 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-25.html" rel="alternate"></link><published>2023-12-25T00:00:00Z</published><updated>2023-12-25T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-12-25.html</id><summary type="html"><article><span> Previous: <a href="2023-12-18.html">Mon 18 Dec 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 18 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-18.html" rel="alternate"></link><published>2023-12-18T00:00:00Z</published><updated>2023-12-18T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-12-18.html</id><summary type="html"><article><span> Previous: <a href="2023-12-11.html">Mon 11 Dec 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>NixOS channels</title><link href="https://mort.io/blog/nixos-channels/" rel="alternate"></link><published>2023-12-13T00:00:00Z</published><updated>2023-12-13T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/nixos-channels/</id><summary type="html"><p>I don’t pretend to understand <a href="https://nixos.org/">NixOS</a> configuration fully···+now they’re in my shell history, they’re what I got.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Mon 11 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-11.html" rel="alternate"></link><published>2023-12-11T00:00:00Z</published><updated>2023-12-11T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-12-11.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 4 Dec 2023</title><link href="https://ryan.freumh.org/2023-12-04.html" rel="alternate"></link><published>2023-12-04T00:00:00Z</published><updated>2023-12-04T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-12-04.html</id><summary type="html"><article><span> Previous: <a href="2023-11-27.html">Mon 27 Nov 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Joined the Royal Society fellowships committee</title><link href="https://anil.recoil.org/notes/royal-society-newton" rel="alternate"></link><published>2023-12-02T00:00:00Z</published><updated>2023-12-02T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/royal-society-newton</id><summary type="html"><p>I joined the <a href="https://royalsociety.org">Royal Society</a> <a href="https://royalsociety.org/grants/newton-international/">Newton International Fellowships</a><a href="https://royalsociety.org/people/anil-madhavapeddy-36582/">committee</a> to help with selecting bright new scientists from abroad who wish to conduct research in the UK.</p><p>The Newton International Fellowship (NIF) programme provides support for outstanding early career researchers to make a first step towards developing an independent research career through gaining experience across international borders. The fellowships enable researchers to access expertise, gain new perspectives and build long-lasting collaborative relationships.<cite> -- <a href="https://royalsociety.org/grants/newton-international/">The Royal Society</a></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>PACT Tropical Moist Forest Accreditation Methodology</title><link href="https://anil.recoil.org/news/2023-pact-tmf-2" rel="alternate"></link><published>2023-12-01T00:00:00Z</published><updated>2023-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-pact-tmf-2</id><summary type="html"><p>We have just released the Tropical Moist Forest v2.0 specification, to update the <a href="https://anil.recoil.org/news/2023-pact-tmf-1">v1.1</a> released earlier in the year. There are significant updates to the methodology to better match the scheme described in <a href="https://anil.recoil.org/papers/2023-ncc-permanence">Realizing the social value of impermanent carbon credits</a>.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 27 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-27.html" rel="alternate"></link><published>2023-11-27T00:00:00Z</published><updated>2023-11-27T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-11-27.html</id><summary type="html"><article><span> Previous: <a href="2023-11-20.html">Mon 20 Nov 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 20 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-20.html" rel="alternate"></link><published>2023-11-20T00:00:00Z</published><updated>2023-11-20T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-11-20.html</id><summary type="html"><article><span> Previous: <a href="2023-11-13.html">Mon 13 Nov 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 13 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-13.html" rel="alternate"></link><published>2023-11-13T00:00:00Z</published><updated>2023-11-13T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-11-13.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 6 Nov 2023</title><link href="https://ryan.freumh.org/2023-11-06.html" rel="alternate"></link><published>2023-11-06T00:00:00Z</published><updated>2023-11-06T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-11-06.html</id><summary type="html"><article><span> Previous: <a href="2023-10-30.html">Mon 30 Oct 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>BBC report on the new Cambridge supercomputer ("Dawn") announced at the 2023 AI Summit</title><link href="https://anil.recoil.org/news/48a7ab10-3f49-4978-a00f-c26b64c2cae7-1" rel="alternate"></link><published>2023-11-02T00:00:00Z</published><updated>2023-11-02T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/48a7ab10-3f49-4978-a00f-c26b64c2cae7-1</id><summary type="html"><p>On the BBC briefly about the Dawn supercomputer</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>More on Icons</title><link href="https://digitalflapjack.com/blog/more-on-icons/" rel="alternate"></link><published>2023-11-01T19:12:03Z</published><updated>2023-11-01T19:12:03Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/more-on-icons/</id><summary type="html"><p>This is a sort of follow on to a post I wrote about <a href="/blog/old-icons/">how icons becoming homogenous and hard to distinguish</a>, and inspired by this image <a href="https://twitter.com/flarup/status/1717578963684364578">posted to social media</a> by <a href="https://www.pixelresort.com">Michael Flarup</a> showing the evolution of the macOS default dock over many versions:</p>···+<p>So there's no technology barrier here, just we need to convince product managers that there's a distinction required for making things fit in with an aesthetic and being usable, which requires a different sort of fitting in.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Where on Earth is the Spatial Name System?</title><link href="https://anil.recoil.org/news/2023-hotnets-sns-1" rel="alternate"></link><published>2023-11-01T00:00:00Z</published><updated>2023-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-hotnets-sns-1</id><summary type="html"><p>Paper on spatial networks on DNS at <a href="https://dl.acm.org/doi/10.1145/3626111.3628210">HotNets 2023</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-hotnets-sns.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Nature Climate Change paper on impermanent carbon credits</title><link href="https://anil.recoil.org/news/2023-ncc-permanence-2" rel="alternate"></link><published>2023-11-01T00:00:00Z</published><updated>2023-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-ncc-permanence-2</id><summary type="html"><p>Our paper on valuing impermanent carbon credits has been published at <a href="https://www.nature.com/articles/s41558-023-01815-0">Nature Climate Change</a>. It has received a bunch of press coverage, including <a href="https://phys.org/news/2023-10-offset-approach-tropical-forests-faith.html">phys.org</a>, <a href="https://www.cam.ac.uk/research/news/offset-markets-new-approach-could-help-save-tropical-forests-by-restoring-faith-in-carbon-credits">cam.ac.uk</a>, and <a href="https://www.miragenews.com/new-method-may-boost-trust-in-carbon-credits-1113599/">Mirage</a>.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ncc-permanence.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>First preprint of LIFE biodiversity metric available</title><link href="https://anil.recoil.org/news/2024-life-1" rel="alternate"></link><published>2023-11-01T00:00:00Z</published><updated>2023-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-life-1</id><summary type="html"><p>The first preprint on our new <a href="https://anil.recoil.org/projects/life">LIFE</a> metric for global biodiversity is now available. It is under review, so feedback would be very welcome.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-life.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 30 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-30.html" rel="alternate"></link><published>2023-10-30T00:00:00Z</published><updated>2023-10-30T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-10-30.html</id><summary type="html"><article><span> Previous: <a href="2023-10-23.html">Mon 23 Oct 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 23 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-23.html" rel="alternate"></link><published>2023-10-23T01:00:00Z</published><updated>2023-10-23T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-10-23.html</id><summary type="html"><article><span> Previous: <a href="2023-10-16.html">Mon 16 Oct 2023</a> </span>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Cambridge Zero highlights University efforts at Climate Week NYC</title><link href="https://anil.recoil.org/notes/mission-possible" rel="alternate"></link><published>2023-10-18T01:00:00Z</published><updated>2023-10-18T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/mission-possible</id><summary type="html"><p>I was on stage in New York for <a href="https://www.cam.ac.uk/news/cambridge-zero-highlights-university-efforts-at-climate-week-nyc">Mission Possible</a>during <a href="https://www.climateweeknyc.org">NYC Climate Week</a>. I was there with <a class="contact" href="https://www.cisl.cam.ac.uk/directory/emily-shuckburgh">Emily Shuckburgh</a> and we met with a lot of Cambridge alumni whoare all engaged with climate change related activities -- either directly in their careers, or through a side interest.</p><p>The major highlights on the discussions with alumni centred around agency: a lot of them were wondering how to combine the evidence coming···careers, and so the University helping to glue this together would potentially result in valuable actions that might not otherwise come together.</p><p>This reminded me strongly of the discussions we had in Pembroke a little while back when <a class="contact" href="https://www.cisl.cam.ac.uk/directory/emily-shuckburgh">Emily Shuckburgh</a> chaired my talk about &quot;Who's in Charge?&quot; for the <a href="https://www.pem.cam.ac.uk/college/corporate-partnership/corporate-partnership-events/william-pitt-seminars/17th-william-pitt">William Pitt Seminar</a> where we had very similar discussions at dinner afterwards.</p>+<p><em>(See also <a href="https://www.zero.cam.ac.uk/who-we-are/blog/news/cambridge-zero-takes-centre-stage-climate-week-nyc">Cambridge Zero</a> notes on the event, and thanks to <a href="https://www.cisl.cam.ac.uk/">CISL</a>.)</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mon 16 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-16.html" rel="alternate"></link><published>2023-10-16T01:00:00Z</published><updated>2023-10-16T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-10-16.html</id><summary type="html"><article>···manually cherry picked examples in a prototype: <a href="https://github.com/RyanGibb/opam-lang-repo-nix">opam-lang-repo-nix</a>.</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Mon 9 Oct 2023</title><link href="https://ryan.freumh.org/2023-10-09.html" rel="alternate"></link><published>2023-10-09T01:00:00Z</published><updated>2023-10-09T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/2023-10-09.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Information Flow Tracking for Heterogeneous Compartmentalized Software</title><link href="https://anil.recoil.org/news/2023-raid-deluminator-1" rel="alternate"></link><published>2023-10-01T01:00:00Z</published><updated>2023-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-raid-deluminator-1</id><summary type="html"><p>Paper on DIFC Deluminator interface at <a href="https://dl.acm.org/doi/10.1145/3607199.3607235">RAID 2023</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-raid-deluminator.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Enabling Lightweight Privilege Separation in Applications with MicroGuards</title><link href="https://anil.recoil.org/news/2023-acns-microguards-1" rel="alternate"></link><published>2023-10-01T01:00:00Z</published><updated>2023-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-acns-microguards-1</id><summary type="html"><p>Paper on microgrounds memory API at <a href="https://link.springer.com/chapter/10.1007/978-3-031-41181-6_31">ACNSW</a></p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-acns-microguards.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional Programming for the Planet</title><link href="https://anil.recoil.org/news/981c00b5-32c0-4cac-a387-6c945dfa9934-1" rel="alternate"></link><published>2023-09-05T01:00:00Z</published><updated>2023-09-05T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/981c00b5-32c0-4cac-a387-6c945dfa9934-1</id><summary type="html"><p>Keynoted at ICFP 2023 on Functional Programming for the Planet</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>State of the OCaml Platform 2023</title><link href="https://anil.recoil.org/news/2023-ocaml-platform-1" rel="alternate"></link><published>2023-09-01T01:00:00Z</published><updated>2023-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-ocaml-platform-1</id><summary type="html"><p>We deliver the annual presentation about the OCaml Platform in the OCaml Workshop at ICFP 2023.</p><p>This paper reflects on a decade of progress and developments within the OCaml Platform, from its inception in 2013 with the release of opam 1.0, to today where it stands as a robust toolchain for OCaml developers. We review the last three years in detail, emphasizing the advancements and innovations that have shaped the OCaml development landscape and highlighting key milestones such as the migration to Dune as the primary build system, and the development of a Language Server Protocol (LSP) server for OCaml.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ocaml-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Scheduling for Reduced Tail Latencies in Highly Utilised Datacenters</title><link href="https://anil.recoil.org/ideas/murmuration" rel="alternate"></link><published>2023-09-01T01:00:00Z</published><updated>2023-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/murmuration</id><summary type="html"><h1>Scheduling for Reduced Tail Latencies in Highly Utilised Datacenters</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.cl.cam.ac.uk/~sv440/">Smita Vijayakumar</a>. It was co-supervised with <a class="contact" href="https://www.cst.cam.ac.uk/people/ek264">Evangelia Kalyvianaki</a>.</p><p>Modern datacenters have become the backbone for running diverse workloads that increas-···+completion times.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Eio 1.0 – Effects-based IO for OCaml 5</title><link href="https://anil.recoil.org/news/2023-ocaml-eio-1" rel="alternate"></link><published>2023-09-01T01:00:00Z</published><updated>2023-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-ocaml-eio-1</id><summary type="html"><p>An update on the OCaml EIO library at the OCaml Workshop 2023</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ocaml-eio.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OneDrive and NixOS</title><link href="https://mort.io/blog/nixos-onedrive/" rel="alternate"></link><published>2023-08-22T01:00:00Z</published><updated>2023-08-22T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/nixos-onedrive/</id><summary type="html"><p>https://github.com/abraunegg/onedrive/blob/master/docs/SharePoint-Shared-Libraries.md<p>FWIW I also use that package on a NixOS system (via a Nix package that can presumably be installed on other systems if you add nix as a package manager), https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNixOS%2Fnixpkgs%2Fblob%2Fmaster%2Fnixos%2Fmodules%2Fservices%2Fnetworking%2Fonedrive.nix&amp;data=05%7C02%7Crmm1002%40universityofcambridgecloud.onmicrosoft.com%7C8792d760606b4a3e80d108dcbd47b53a%7C49a50445bdfa4b79ade3547b4f3986e9%7C1%7C0%7C638593362895323916%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&amp;sdata=qPJyO0hTLRnrkbssZ0Y4cLfhaygDiEQtlQ0pwAjgMwM%3D&amp;reserved=0.</p><p>I have successfully used it with the University and my startup’s tenancies (both personal OneDrive and enterprise Sharepoint sites) simultaneously – this was fairly simple in the end but I recall it took a while to do the token dance to get the necessary tokens, and then to get all the runes right. In short it was something like:</p>···<h1 id="for-startup-sharepoint-sites"><a class="zola-anchor" href="https://mort.io/blog/nixos-onedrive/#for-startup-sharepoint-sites">for startup Sharepoint sites</a></h1>+drive_id = “…” # rune found per instructions Robert pointed to I think</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Pandas vs Efficiency</title><link href="https://digitalflapjack.com/blog/pandas-vs-efficiency/" rel="alternate"></link><published>2023-08-07T11:21:45Z</published><updated>2023-08-07T11:21:45Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/pandas-vs-efficiency/</id><summary type="html"><p>As part of my role at the <a href="https://4c.cst.cam.ac.uk">Cambridge Center for Carbon Credits (4C)</a>, working closely with ecologists in processing of data, I've become an accidental data scientist, by which I mean instead of loading CSV files directly I now use <a href="https://pandas.pydata.org">pandas</a>. Pandas is a popular library that makes working with large arrays of data easier. Unlike <a href="https://numpy.org">numpy</a>, which is there to make it easy to process data in multidimensional arrays, pandas works one abstraction higher, giving columns names and treating the data as tabular, rather than just raw numbers. But similar to numpy, it provides nice syntax to help you work with that data without worrying about individual elements, you tend to work at that tabular level, and that makes it particularly powerful for someone who isn't a native programmer, rather someone who is a domain expert in whatever they have data about who is trying to process that data to derive a new insight.</p><p>I'm quite a fan of Numpy: Numpy makes it simple to reason about large amounts of data without worrying about each element,and at the same time it is really quite efficient at doing so. I recently tried rewriting some Python code that used numpy to a compiled language thinking it'd be faster, but under the hood numpy is using compiled code already to do vectorized operations, so is actually quite efficient, and my native code version was as a result no faster and harder to read.</p><p>So given it's popularity, and the fact that it uses Numpy under the hood, I'd assumed that pandas would similarly provide that double win of simplicity of expression with efficiency of computation, but I was mistaken: using pandas to process data turned out to be very inefficient. In this post I'm going to walk through a particular problem I was trying to solve, and then look into how I managed to speed it up, and then worry about what this means for the regular data-scientist that isn't also steeped in computer-science knowledge.</p>···<p>There's two readings of this post. Firstly, if you're stuck trying to improve the performance of your pandas code, then consider exporting it to numpy if you're doing bulk calculations on the data rather than just dealing with columns etc. It'll save you some time and memory and your electricity bill will be lower. But then it'd also be valid to say for this kind of task you might also want to look at tools like <a href="https://sparkbyexamples.com">Spark</a> and <a href="https://dask.org/">Dask</a> which do some of the lifting for you, at the expense of learning yet another framework properly before it'll really be able to help you.</p><p>But secondly, and perhaps more interestingly, is how could this be made such that if you're an expert in a domain that isn't computer science, how do you figure this stuff out? Or perhaps from my perspective: how, as someone making libraries for ecologists to use, how do I make it so they don't get into this trap? Perhaps it'd be better if pandas doesn't have the apply function to loop over the data, and it just had the &quot;dump data to numpy&quot; function instead? Providing nothing would have helped me, as I already know numpy, but that might have just put off other data scientists?</p><p>Or put another way, does everyone doing significant data science in all domains but one need to have a part-time computerist on their team? Should we just acknowledge that this stuff requires some under-the-hood systems knowledge to get right, and so the way forward is a pairing of experts. You hope that most the time the tools do good, but at some point you want to have a domain expert review things? This falls down I imagine when it comes to funding - who wants to add another person to the project in the name of efficiency when you can kludge by and your budget is already tight?</p>+<p>I don't know what the answer is, but I do know that having to apply me to even a small set of ecologists doesn't scale, and given the state of the climate we need to be enabling as many ecologists as we can. So with projects like <a href="https://github.com/carboncredits/yirgacheffe/">yirgacheffe</a> I plan to continue trying to do &quot;the right thing&quot; to empower and enable my ecologist colleagues, but then perhaps I need to learn to explicitly signal when my way isn't the best way and perhaps expert review is needed.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Why using Slack is bad for GeoTIFF Rasters</title><link href="https://digitalflapjack.com/blog/slack-bad-for-gis-rasters/" rel="alternate"></link><published>2023-08-03T14:48:18Z</published><updated>2023-08-03T14:48:18Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/slack-bad-for-gis-rasters/</id><summary type="html"><p>In the past <a href="/blog/some-notes-on-processing-and-display-geospatial-data/">I've written about</a> how <a href="https://www.ogc.org/standard/geotiff/">GeoTIFF</a> is one of the most common datas formats used for geospatial data. A GeoTIFF is just a standard TIFF image with a few extra fields on it that mean geospatial tools such as <a href="https://qgis.org/en/site/">QGIS</a> or libraries such as <a href="https://gdal.org">GDAL</a> know what geographic region this data is referring to, and what map projection system its stored relative to. For example, here is a GeoTIFF I generated showing me where in Sweden you might find moose (meese?):</p>···<p>Now, on one hand this isn't really progress, as I still don't know what settings on the GeoTIFF cause Slack to render a review versus not - I have the same problem and just a quicker way to diagnose it perhaps. But then on the other hand at least I can diagnose it now: if I send a colleague a GeoTIFF and it renders a preview, it is now ruined. I assume that if you have a preview and you download the image again then you get a new image from the original data rather than the one you uploaded. Or perhaps, as my colleague <a href="https://patrick.sirref.org">Patrick</a> pointed out, once Slack decides to treat it like an image it <a href="https://techcrunch.com/2020/05/11/slack-strips-location-data/">strips out metadata for security reasons</a> - but then if that's the case its poor that I can get images through that don't get cleaned up like that.</p><p>It does remind me a bit of the early days of mobile networks, where your mobile operator would rewrite images you downloaded on their servers to be more highly compressed, so as to save them bandwidth. You hear less of that these days, and I have checked the actual image data, and I've not yet found one where the data itself was changed, just the metadata.</p>+<p>Slack fiddling in this way me cost the better part of days work, because we didn't spot that it had mangled one of our datasets and so we had confused results, and so it's particularly vexing that I can't find a root cause, but at least I have a work around now: I've taken to putting any GeoTIFFs I send to colleagues into a zip file now - not to save space (given the GeoTIFFs are compressed putting them in a zip often makes them slightly larger), but rather to stop Slack fiddling with them. Not the best, but if I do it as a matter of course, I never have to think about this again, at least until Slack decide to fiddle with zip files.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Meta Properties of Financial Smart Contracts</title><link href="https://anil.recoil.org/ideas/metaproperties-for-smart-contracts" rel="alternate"></link><published>2023-08-01T01:00:00Z</published><updated>2023-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/metaproperties-for-smart-contracts</id><summary type="html"><h1>Meta Properties of Financial Smart Contracts</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://derekhsorensen.com">Derek Sorensen</a>. It was co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a>.</p>···+contracts. The formal tools presented are written in Coq.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Computational Models for Scientific Exploration</title><link href="https://anil.recoil.org/ideas/computational-scientific-methods" rel="alternate"></link><published>2023-08-01T01:00:00Z</published><updated>2023-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/computational-scientific-methods</id><summary type="html"><h1>Computational Models for Scientific Exploration</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>. It is co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a>.</p>···<li>There is an extensive amount of source code up at <a href="https://github.com/quantifyearth">https://github.com/quantifyearth</a>and <a href="https://github.com/carboncredits">https://github.com/carboncredits</a> which forms parts of our pipeline.</li><li>See the related ideas for some smaller scale projects you can engage with.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Preprint on the social value of impermanent carbon credits</title><link href="https://anil.recoil.org/news/2023-ncc-permanence-1" rel="alternate"></link><published>2023-07-01T01:00:00Z</published><updated>2023-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-ncc-permanence-1</id><summary type="html"><p>We have uploaded a preprint of our <a href="https://anil.recoil.org/projects/4c">4C</a> paper on valuing impermanent carbon credits, by using the <a href="https://en.wikipedia.org/wiki/Social_cost_of_carbon">Social Cost of Carbon</a> as a basis for a discount function into the future. Comments and feedback are most welcome.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-ncc-permanence.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml wins the ACM Programming Language Software award</title><link href="https://anil.recoil.org/notes/acm-sigplan-award" rel="alternate"></link><published>2023-06-19T01:00:00Z</published><updated>2023-06-19T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/acm-sigplan-award</id><summary type="html"><p>I was honoured to be included in the OCaml team that won the <a href="https://www.cst.cam.ac.uk/news/acm-programming-languages-software-award-goes-ocaml-researchers">ACM Programming Languages Software Award for 2023</a>.</p><p>The Association for Computing Machinery (ACM), the world's largest association of computing professionals, today gave the 2023 SIGPLAN Award to a group of developers for their work on the functional programming language OCaml.</p><p>The award was presented at the annual SIGPLAN Programming Language Design and Implementation Conference to a group of researchers and developers including our colleague Anil Madhavapeddy, Professor of Planetary Computing here.</p>···<p>The OCaml Compiler Distribution is the reference implementation of the OCaml language, a dialect of ML that aims to be pragmatic, both in language features and implementation, encouraging a simple programming style that yields good performance and usability. It has a large user base in industry, research, and education throughout the world, and was used to implement a number of other impactful systems, notably in verification: Coq proof assistant, CompCert verified compiler, Why3 verified programming environment, Frama-C, Astrée and Gillian static analyzers, Infer, Hack and Flow projects at Meta, SLAM/SDV and F* at Microsoft, etc.<cite>-- <a href="https://www.sigplan.org/Awards/Software/">ACM SIGPLAN</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Developing OCaml with Nix</title><link href="https://ryan.freumh.org/ocaml-nix.html" rel="alternate"></link><published>2023-06-07T01:00:00Z</published><updated>2023-06-07T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/ocaml-nix.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>PACT Tropical Moist Forest Accreditation Methodology</title><link href="https://anil.recoil.org/news/2023-pact-tmf-1" rel="alternate"></link><published>2023-06-01T01:00:00Z</published><updated>2023-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-pact-tmf-1</id><summary type="html"><p>We have just published the Tropical Moist Forest v1.0 specification, which is a detailed description of the methodology we are using for counterfactual dynamic baselines to calculate the additionality, leakage and permanence behind REDD+ projects. I explained some of the background behind this in a seminar last year.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Build your own Stacks Project in 10 minutes</title><link href="https://www.forester-notes.org/jms-0052/" rel="alternate"></link><published>2023-05-14T01:00:00Z</published><updated>2023-05-14T01:00:00Z</updated><author><name>JonS</name></author><id>https://www.forester-notes.org/jms-0052/</id><summary type="html"><p><a href="https://www.forester-notes.org/stacks-project/">The Stacks project</a> is the most successful scientific hypertext project in history. Its goal is to lay the foundations for the theory of algebraic stacks; to facilitate its scalable and sustainable development, several important innovations have been introduced, with the <em>tags</em> system being the most striking.</p><blockquote>Each tag refers to a unique item (section, lemma, theorem, etc.) in order for this project to be referenceable. These tags don't change even if the item moves within the text. (<a href="https://stacks.math.columbia.edu/tags">Tags explained</a>, <a href="https://www.forester-notes.org/stacks-project/">The Stacks Project</a>).</blockquote><p>Many working scientists, students, and hobbyists have wished to create their own tag-based hypertext knowledge base, but the combination of tools historically required to make this happen are extremely daunting. Both the <a href="https://www.forester-notes.org/stacks-project/">Stacks project</a> and <a href="https://www.forester-notes.org/kerodon/">Kerodon</a> use a cluster of software called <a href="https://www.forester-notes.org/gerby/">Gerby</a>, but bitrot has set in and it is <a href="https://github.com/gerby-project/plastex/issues/60">no longer possible</a> to build its dependencies on a modern environment without significant difficulty, raising questions of longevity.</p><p>Moreover, <a href="https://www.forester-notes.org/gerby/">Gerby</a>’s deployment involves running a database on a server (in spite of the fact that almost the entire functionality is static HTML), an architecture that is incompatible with the constraints of the everyday working scientist or student who knows <em>at most</em> how to upload static files to their university-provided public storage. The recent experience of the <a href="https://ncatlab.org/nlab/show/HomePage">nLab</a>’s pandemic-era hiatus and near death experience has demonstrated with some urgency the pracarity faced by any project relying heavily on volunteer system administrators.</p>···<p>I am eager to see the new <a href="https://www.forester-notes.org/tfmt-000R/">forests</a> that people create using <a href="https://www.forester-notes.org/index/">Forester</a>. I am happy to offer personal assistance via the <a href="https://lists.sr.ht/~jonsterling/forester-discuss">mailing list</a>.</p><p>Many aspects of <a href="https://www.forester-notes.org/index/">Forester</a> are in flux and not fully documented; it will often be instructive to consult the source of existings <a href="https://www.forester-notes.org/tfmt-000R/">forests</a>, such as <a href="https://git.sr.ht/~jonsterling/forester-notes.org">this one</a>.</p><p>Have fun, and be sure to send me links to your <a href="https://www.forester-notes.org/tfmt-000R/">forests</a> when you have made them!</p>+</section></summary><category term="Forester Blog"></category></entry><entry><title>Credit credibility threatens forests</title><link href="https://anil.recoil.org/news/2023-carbon-credibility-1" rel="alternate"></link><published>2023-05-01T01:00:00Z</published><updated>2023-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2023-carbon-credibility-1</id><summary type="html"><p>Our perspective in <a href="https://science.org">Science</a> magazine appeared this week on the credibility of carbon credits and its importance for tropical forest protection.</p><p>Addressing global warming requires increased investment in conserving and restoring carbon-dense natural habitats. Some companies that emit carbon have turned to certified carbon credits to offset their environmental impact. However, the effectiveness of carbon credits depends on the methods used to quantify them. If carbon credits do not accurately represent their environmental benefits, relying on them could exacerbate climate change. To ensure that carbon credits are robust, the methods used to calculate them must be improved.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2023-carbon-credibility.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>WSL2 / Windows 11</title><link href="https://mort.io/blog/windows-wsl2/" rel="alternate"></link><published>2023-03-13T00:00:00Z</published><updated>2023-03-13T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/windows-wsl2/</id><summary type="html"><p>I naively thought I could just use WSL2 on Windows on my new laptop. But it<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">wsl</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>set-default-version</span> 2</span>···<li><a href="https://stephenreescarter.net/how-to-shrink-a-wsl2-virtual-disk/">https://stephenreescarter.net/how-to-shrink-a-wsl2-virtual-disk/</a></li><li><a href="https://www.linkedin.com/pulse/acceso-wsl2-desde-windows-con-samba-manuel-nicol%C3%A1s-ortu%C3%B1o/">https://www.linkedin.com/pulse/acceso-wsl2-desde-windows-con-samba-manuel-nicol%C3%A1s-ortu%C3%B1o/</a></li>+</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>Leveraging Scientific Innovation and AI to Scale Carbon Markets</title><link href="https://anil.recoil.org/news/ce64a918-ff52-4116-b1ee-256f08e6e7f1-1" rel="alternate"></link><published>2023-03-07T00:00:00Z</published><updated>2023-03-07T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/ce64a918-ff52-4116-b1ee-256f08e6e7f1-1</id><summary type="html"><p>Discussion with Mantle Labs about carbon credits</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A Case for Planetary Computing</title><link href="https://anil.recoil.org/news/2024-planetary-computing-1" rel="alternate"></link><published>2023-03-01T00:00:00Z</published><updated>2023-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2024-planetary-computing-1</id><summary type="html"><p>Preprint of planetary computing paper</p>···&nbsp; <a href="https://anil.recoil.org/papers/2024-planetary-computing.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml operators</title><link href="https://mort.io/blog/ocaml-operators/" rel="alternate"></link><published>2023-02-26T00:00:00Z</published><updated>2023-02-26T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/ocaml-operators/</id><summary type="html"><p>An <a href="https://www.brendanlong.com/ocaml-operator-cheatsheet.html">OCaml operator+<a href="https://ocaml.org/">OCaml</a> operators that I have found useful.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Software folklore</title><link href="https://mort.io/blog/software-folklore/" rel="alternate"></link><published>2023-02-26T00:00:00Z</published><updated>2023-02-26T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/software-folklore/</id><summary type="html"><p>Truly cursed bugs that have become <a href="http://beza1e1.tuxen.de/lore/">software+folklore</a>.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Species distribution modelling using CNNs</title><link href="https://anil.recoil.org/ideas/sdms-with-cnns" rel="alternate"></link><published>2023-02-01T00:00:00Z</published><updated>2023-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/sdms-with-cnns</id><summary type="html"><h1>Species distribution modelling using CNNs</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/emorris7">Emily Morris</a>. It was co-supervised with <a class="contact" href="https://coomeslab.org">David A Coomes</a>.</p><p>The goal of this project is to compare the performance of <a href="https://biodiversityinformatics.amnh.org/open_source/maxent/">MaxEnt</a> techniques to the performance of a CNN model for the task of species distribution···<p>To evaluate it, we will focus on <a href="https://en.wikipedia.org/wiki/Protea">proteas</a> for the species distribution modeling task. We have two observation data sets: the Protea Atlas and iNaturalist. The work for the CNN is largely based on the work doneby <a href="https://europepmc.org/article/ppr/ppr533361">Gillespie et al</a>, who present a model that takes in an RGB image and anembedding for environment variables and predicts which species are present in the image. This method performs multispecies presence modeling and the use of other species is somewhat central to the method. Including other species gives training examples which are pseudo-absences for some species, circumventing the issue of the lack of negative data.</p>+<p>This project was conducted successfully, and presented at the <a href="https://www.climatechange.ai/events/neurips2024">CCAI Workshop</a> at NeurIPS as '<a href="https://anil.recoil.org/papers/2024-sdm-sa">Towards Scalable Deep Species Distribution Modelling using Global Remote Sensing</a>'.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>How to update a Tezos Smart-Contract</title><link href="https://digitalflapjack.com/blog/tezos-contract-upgrades/" rel="alternate"></link><published>2023-01-25T11:28:59Z</published><updated>2023-01-25T11:28:59Z</updated><author><name>MichaelD</name></author><id>https://digitalflapjack.com/blog/tezos-contract-upgrades/</id><summary type="html"><h1>How to update a Smart-Contract</h1><p>The <a href="https://4c.cst.cam.ac.uk">Cambridge Center for Carbon Credits</a> (4C) has been looking at using a distributed ledger, aka blockchain, to make a public, immutable, verifiable store of information about carbon-offsets as a way of providing traceability into the validity of that offset. Whilst blockchains are not my domain of expertise, I was tasked earlier this year with getting the project's smart contract ready for production, being the experienced generalist software-engineer on the team. I've <a href="https://digitalflapjack.com/blog/getting-started-with-tezos/">previously written up</a> some of the trials of getting started with the Tezos blockchain platform from a software-engineering perspective, and this post is more of the same, but focussed on one particular area: how do you ship updates to your smart-contract once you've shipped it?</p><p>The problem is this: any bit of software evolves over time, either to fix bugs, refine existing features in the light of new knowledge, or to add support for new functionality. However, one of the reasons people use blockchains is because they are public immutable data-structures, which can only be appended and never changed: this means that the smart-contract code you instantiated to run on the blockchain has the same properties of immutability, by virtue of being stored in that same blockchain on which it is running. This leaves us in a bit of a quandary.</p><p>This post looks then both at why did people build a system that is so hard to upgrade (which to me initially wasn't as obvious as I'd assumed), and then looks at the different strategies that people use for upgrading smart-contracts. As before, this article is very much focussed on <a href="https://tezos.com">Tezos</a> (who, for clarity, are one of 4C's funders), but I have dragged in references from the <a href="https://ethereum.org/">Ethereum</a> blockchain this time, as they have more documentation around upgrades that I was able to learn from; Tezos is still relatively young, and as such its documentation is not quite as rich as Ethereum's.</p>···<p>There is no one size fits all solution, but hopefully by using the above set of questions you can narrow down the set of patterns to the one that best fits your situation.</p>+<p>My thanks to my 4C colleagues who helped with this: Patrick Ferris, Sadiq Jaffer, Srinivasan Keshav, Anil Madhavapeddy, and Derek Sorensen. Additional thanks to <a href="https://twitter.com/echa_io">Alexander Eichhorn</a> on the insights around how indexers work.</p></summary><category term="Digital Flapjack"></category></entry><entry><title>Bibliography Management</title><link href="https://ryan.freumh.org/bibliography-management.html" rel="alternate"></link><published>2023-01-17T00:00:00Z</published><updated>2023-01-17T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/bibliography-management.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>OCaml.org: recapping 2022 and queries on the Fediverse</title><link href="https://anil.recoil.org/notes/recapping-ocaml-22" rel="alternate"></link><published>2023-01-02T00:00:00Z</published><updated>2023-01-02T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/recapping-ocaml-22</id><summary type="html"><p>I recap the OCaml community progress in 2022, which covers a number of bases ranging from+the release of OCaml 5.0, the launch of a new website with integrated documentation for 20000+ packages, prototyping new developer workflows that are better integrated into editors, and the launch of ActivityPub based services such as <a href="https://watch.ocaml.org">https://watch.ocaml.org</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The role of urban vegetation in human health</title><link href="https://anil.recoil.org/ideas/urban-vegetation" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/urban-vegetation</id><summary type="html"><h1>The role of urban vegetation in human health</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://ancazugo.github.io/">Andres Zuñiga-Gonzalez</a>. It is co-supervised with <a class="contact" href="https://www.arct.cam.ac.uk/people/dr-ronita-bardhan">Ronita Bardhan</a>.</p>···<li>Read more in the first abstract: <a href="https://anil.recoil.org/papers/2024-green-urban-eq">Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications</a></li><li>There will be a talk at <a href="https://www.conftool.pro/biospace25/sessions.php">Biospace 2025</a> at the European Space Agency from <a class="contact" href="https://ancazugo.github.io/">Andres Zuñiga-Gonzalez</a> and <a class="contact" href="https://profiles.imperial.ac.uk/joshua.millar22">Josh Millar</a> in Feb 2025</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reverse emulating agent-based models for policy simulation</title><link href="https://anil.recoil.org/ideas/rev-abm" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/rev-abm</id><summary type="html"><h1>Reverse emulating agent-based models for policy simulation</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.linkedin.com/in/pedro-marques-sousa/">Pedro Sousa</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p><p>Governments increasingly rely on simulation tools to inform policy design. Agent-based models (ABMs) simulate complex systems to study the emergent phenomena of individual behaviours and interactions in agent populations. However, these ABMs force an iterative, time-consuming, unmethodical parameter tuning of key policy &quot;levers&quot; (or input parameters) to steer the model towards the envisioned outcomes. To unlock a more natural workflow, this project investigates <em>reverse emulation</em>, a novel approach that streamlines policy design using probabilistic machine learning to predict parameter values that yield the desired policy outcomes.</p>···<li>Publication to follow as it is currently being written up. The project was awarded the &quot;<a href="https://www.linkedin.com/feed/update/urn:li:activity:7228682518596603904/">2024 Highly Commended M.Phil Project</a>&quot; commendation from the Computer Science department.</li>+<p>This project was a followup to one in the previous year by <a class="contact" href="https://anil.recoil.org/">Sharan Agrawal</a> on <a href="https://anil.recoil.org/ideas/differentiable-abm">Scalable agent-based models for optimized policy design</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Remote Sensing of Nature</title><link href="https://anil.recoil.org/projects/rsn" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/rsn</id><summary type="html"><div><p><p>Measuring the world's forest carbon and biodiversity is made possible by remote···human health. Read more about our work in &quot;<a href="https://anil.recoil.org/papers/2024-green-urban-eq">Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications</a>&quot; and the projectin <a href="https://anil.recoil.org/ideas/urban-vegetation">The role of urban vegetation in human health</a>.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mapping LIFE on Earth</title><link href="https://anil.recoil.org/projects/life" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/life</id><summary type="html"><div><p><p>Human-driven habitat loss is recognised as the greatest cause of biodiversity loss, but we lack robust, spatially explicit metrics quantifying the impacts of anthropogenic changes in habitat extent on species' extinctions. LIFE is our new metric that uses a persistence score approach that combines ecologies and land-cover data whilst considering the cumulative non-linear impact of past habitat loss on species' probability of extinction. We apply large-scale computing to map ~30k species of terrestrial vertebrates and provide quantitative estimates of the marginal changes in the expected number of extinctions caused by converting remaining natural vegetation to agriculture, and also by restoring farmland to natural habitat. We are also investigating many of the conservation opportunities opened up via its estimates of the impact on extinctions of diverse actions that change land cover, from individual dietary choices through to global protected area development.</p>···<p>Agriculturally-driven habitat degradation and destruction is the biggest threat to global biodiversity, and so an exciting line of work that <a class="contact" href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball">Thomas Ball</a> has been leading is to tie the LIFE metric with food consumption and production data and provenance modelling in order to figure out the impact of what we eat on species extinctions. The preprint on the FOOD metric (<a href="https://anil.recoil.org/papers/2024-food-life">Quantifying the impact of the food we eat on species extinctions</a>) shows that despite marked differences in per-capita impacts across countries, there are consistent patterns that could be leveraged for mitigating harm to biodiversity. We're continuing to work on refining this data and analysis, particularly via higher resolution supply chain datasets and crop yield data.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Interspatial Networking with DNS</title><link href="https://anil.recoil.org/ideas/interspatial-networking" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/interspatial-networking</id><summary type="html"><h1>Interspatial Networking with DNS</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently <span class="idea-ongoing">being worked on</span> by <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>. It is co-supervised with <a class="contact" href="mailto:jon.crowcroft@cl.cam.ac.uk">Jon Crowcroft</a>.</p>···<li><a href="https://anil.recoil.org/papers/2023-hotnets-sns">Where on Earth is the Spatial Name System?</a></li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Improving Resilience of ActivityPub Services</title><link href="https://anil.recoil.org/ideas/activitypub-resilience" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/activitypub-resilience</id><summary type="html"><h1>Improving Resilience of ActivityPub Services</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Gediminas Lelešius</a>.</p>distributed social networking protocol &quot;ActivityPub&quot;, by caching the content on···<li>The <a href="https://github.com/gediminasel/activitypub-resilience">dissertation is on GitHub</a>.</li><li>The modified <a href="https://github.com/gediminasel/mastodon-resilience">Mastodon source code</a>.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Assessing high-performance lightweight compression formats for geospatial computation</title><link href="https://anil.recoil.org/ideas/compressive-geospatial" rel="alternate"></link><published>2023-01-01T00:00:00Z</published><updated>2023-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/compressive-geospatial</id><summary type="html"><h1>Assessing high-performance lightweight compression formats for geospatial computation</h1><p>This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/omarathon">Omar Tanner</a>. It was co-supervised with <a class="contact" href="https://toao.com">Sadiq Jaffer</a>.</p>···<li><a href="https://github.com/omarathon/mres/blob/32bcdd4413e951933c40f037c0c595ebbebe3aca/mres_project.pdf">Dissertation PDF</a> for the <a href="https://cdt.sensors.cam.ac.uk/sd-classification/2023-student-cohort">Sensors CDT MRes</a>.</li><li><a href="https://github.com/omarathon/compression-geospatial">Source Code</a></li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Hacking on the Remarkable 2</title><link href="https://ryan.freumh.org/remarkable2.html" rel="alternate"></link><published>2022-12-17T00:00:00Z</published><updated>2022-12-17T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/remarkable2.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Nix</title><link href="https://ryan.freumh.org/nix.html" rel="alternate"></link><published>2022-12-14T00:00:00Z</published><updated>2022-12-14T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/nix.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Hillingar: MirageOS Unikernels on NixOS</title><link href="https://ryan.freumh.org/hillingar.html" rel="alternate"></link><published>2022-12-14T00:00:00Z</published><updated>2022-12-14T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/hillingar.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Financing Forests: A Credible Approach towards Halting Tropical Deforestation</title><link href="https://anil.recoil.org/news/bc9da6fc-9419-4f18-9db9-c13b1a4a859f-1" rel="alternate"></link><published>2022-11-16T00:00:00Z</published><updated>2022-11-16T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/bc9da6fc-9419-4f18-9db9-c13b1a4a859f-1</id><summary type="html"><p>Wednesday seminar on financing forests using carbon credits</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>17th William Pitt Seminar - Who's in Charge?</title><link href="https://anil.recoil.org/news/a26475b5-c169-478e-b88e-be5cd1f2aff8-1" rel="alternate"></link><published>2022-11-01T00:00:00Z</published><updated>2022-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/a26475b5-c169-478e-b88e-be5cd1f2aff8-1</id><summary type="html"><p>I opened the 17th William Pitt Seminar at Pembroke College on climate change with a brief talk about the status of the world's biodiversity, and how we have more agency than ever before to take matters into our own hands.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The 2nd ed of Real World OCaml is available in shops</title><link href="https://anil.recoil.org/news/rwo-2" rel="alternate"></link><published>2022-10-01T01:00:00Z</published><updated>2022-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/rwo-2</id><summary type="html"><p>I'm delighted to report that the second edition of <a href="https://realworldocaml.org">Real World OCaml</a> is now available from Cambridge University Press! It's also freely available <a href="https://realworldocaml.org">online</a>, and CUP also kindly agreed that the PDF version could be freely available online thanks to sponsorship from <a href="https://tarides.com">Tarides</a>. <span class="morewords">[…<a href="https://anil.recoil.org/news/rwo-2">105 words</a>]</span></p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Homogeneous Builds with OBuilder and OCaml</title><link href="https://anil.recoil.org/news/2022-oud-ocurrent-1" rel="alternate"></link><published>2022-09-01T01:00:00Z</published><updated>2022-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2022-oud-ocurrent-1</id><summary type="html"><p>Paper on our incremental computation DSL ocurrent presented in OCaml Workshop 2022</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Nim</title><link href="https://ryan.freumh.org/nim.html" rel="alternate"></link><published>2022-08-30T01:00:00Z</published><updated>2022-08-30T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/nim.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>A DSL for decentralised identity in OCaml</title><link href="https://anil.recoil.org/ideas/dsl-for-decentralised-id" rel="alternate"></link><published>2022-08-01T01:00:00Z</published><updated>2022-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/dsl-for-decentralised-id</id><summary type="html"><h1>A DSL for decentralised identity in OCaml</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://www.linkedin.com/in/michal-mgeladze-arciuch">Michał Mgeładze-Arciuch</a>. It was co-supervised with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a>.</p>···contact the author for a copy of it. <a class="contact" href="https://www.linkedin.com/in/michal-mgeladze-arciuch">Michał Mgeładze-Arciuch</a> has subsequently founded <a href="https://www.czechtradeoffices.com/se/news/czech-startup-yoneda-labs-raises-over-$100-million-to-revolutionize-chemical-reactions-with-ai">Yoneda+reactions</a>!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Trusted Carbon Credits</title><link href="https://anil.recoil.org/news/4c-1" rel="alternate"></link><published>2022-05-06T01:00:00Z</published><updated>2022-05-06T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/4c-1</id><summary type="html"><p>With the recent controversies over low-integrity carbon credits, I spoke to Vox magazine<p>&quot;The problem with the current markets is nothing to do with how we can trade these more effectively,&quot; said Anil Madhavapeddy, who is an associate professor of computer science and technology at Cambridge University and the director of the Cambridge Center for Carbon Credits. &quot;We just do not have enough supply.&quot;···<p>The Cambridge Centre for Carbon Credits is an initiative I started with <a class="contact" href="https://www.zoo.cam.ac.uk/directory/andrew-balmford">Andrew Balmford</a>, <a class="contact" href="https://coomeslab.org">David A Coomes</a>, <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> and <a class="contact" href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield">Thomas Swinfield</a>, aimed at issuing trusted and verifiable carbon credits towards the prevention of nature destruction due to anthropogenic actions. We researched a combination of large-scale data processing (satellite and and sensor networks) and decentralised <a href="https://tezos.com">Tezos</a> smart contracts to design a carbon marketplace with verifiable transactions that link back to trusted primary observations. <span class="morewords">[…<a href="https://anil.recoil.org/projects/4c">230 words</a>]</span></p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Secure Programming with Dispersed Compartments</title><link href="https://anil.recoil.org/ideas/dispersed-compartments" rel="alternate"></link><published>2022-05-01T01:00:00Z</published><updated>2022-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/dispersed-compartments</id><summary type="html"><h1>Secure Programming with Dispersed Compartments</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science PhD topic, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://zatkh.github.io/">Zahra Tarkhani</a>.</p>···<p>See <a class="contact" href="https://zatkh.github.io/">Zahra Tarkhani</a>'s completed <a href="https://www.repository.cam.ac.uk/items/15b038fd-2b81-4608-a033-fc5a39de3bf2">PhD thesis</a>+on the subject for more details!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Multicore Monthly: heading towards OCaml 5.0</title><link href="https://anil.recoil.org/notes/multicore-monthly-mar22" rel="alternate"></link><published>2022-04-19T01:00:00Z</published><updated>2022-04-19T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-mar22</id><summary type="html"><p>We're getting closer to a stable release of OCaml 5.0, including reenabling support for the BSDs and introducing ARM64 multicore support.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Virtual and Augmented Reality</title><link href="https://ryan.freumh.org/vr-ar.html" rel="alternate"></link><published>2022-04-18T01:00:00Z</published><updated>2022-04-18T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/vr-ar.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>OCaml Multicore Monthly: post merge activites</title><link href="https://anil.recoil.org/notes/multicore-monthly-jan22" rel="alternate"></link><published>2022-02-09T00:00:00Z</published><updated>2022-02-09T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-jan22</id><summary type="html"><p>After we got the massive OCaml 5.0 pull request merged, we've taken some time to consolidate the trunk branch of OCaml and start down the release path towards getting OCaml 5.0 out of the door.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>DNS LOC</title><link href="https://ryan.freumh.org/dns-loc-rr.html" rel="alternate"></link><published>2022-01-18T00:00:00Z</published><updated>2022-01-18T00:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/dns-loc-rr.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Using effect handlers for efficient parallel scheduling</title><link href="https://anil.recoil.org/ideas/parallel-scheduling-with-effects" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/parallel-scheduling-with-effects</id><summary type="html"><h1>Using effect handlers for efficient parallel scheduling</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/bartoszmodelski">Bartosz Modelski</a>.</p>···<p>Read the full <a href="https://github.com/bartoszmodelski/ebsl/blob/main/report/report.pdf">reportonline, and see the <a href="https://github.com/bartoszmodelski/ebsl">notebooks</a>+associated with the experiments here.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Spatial Name System</title><link href="https://anil.recoil.org/ideas/sns" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/sns</id><summary type="html"><h1>Spatial Name System</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a>. It was co-supervised with <a class="contact" href="mailto:jon.crowcroft@cl.cam.ac.uk">Jon Crowcroft</a>.</p>···<p>An extended version of this was published in HotNets 22 in <a href="https://anil.recoil.org/papers/2023-hotnets-sns">Where on Earth is the Spatial Name System?</a>.The MPhil dissertation is available <a href="https://ryan.freumh.org/papers/2022-mphil-sns.pdf">online as aPDF</a>. <a class="contact" href="https://ryan.freumh.org">Ryan Gibb</a> has continued+on to work on his PhD on <a href="https://anil.recoil.org/ideas/interspatial-networking">Interspatial Networking with DNS</a> as well!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Scalable agent-based models for optimized policy design</title><link href="https://anil.recoil.org/ideas/differentiable-abm" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/differentiable-abm</id><summary type="html"><h1>Scalable agent-based models for optimized policy design</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Sharan Agrawal</a>. It was co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a>.</p><p>As the world faces twinned crises of climate change and biodiversity loss, the need for integrated policy approaches addressing both is paramount. To help address this, this project investigates a new agent-based model dubbed the VDSK-B. Using Dasgupta's <a href="https://www.gov.uk/government/publications/final-report-the-economics-of-biodiversity-the-dasgupta-review">review of the economics of biodiversity</a>, it builds on the <a href="https://www.sciencedirect.com/science/article/pii/S0921800917314623">Dystopian Schumpeter meets Keynes</a> (DSK) climate economics model to link together the climate, economy and biosphere. This is the first ABM proposed that integrates all 3 key elements.</p><p>The project also investigates how to scale such ABMs to be applicable for global policy design and scale to planetary-sized models. A new ABM framework called SalVO expresses agent updates as recursive applications of pure agent functions. This formalism differs from existing computational ABM models but is shown to be expressive enough to emulate a Turing complete language. SalVO is built on a JAX backend and designed to be scalable, vectorized, and optimizable. Employing hardware acceleration, tests showed it was more performant and more able to scale on a single machine than any existing ABM framework, such as FLAME (GPU).</p>···+<p><a class="contact" href="https://www.linkedin.com/in/pedro-marques-sousa/">Pedro Sousa</a> did a follow up project on <a href="https://anil.recoil.org/ideas/rev-abm">Reverse emulating agent-based models for policy simulation</a> in 2023.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Planetary Computing</title><link href="https://anil.recoil.org/projects/plancomp" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/plancomp</id><summary type="html"><div>···+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Enhancing the Security & Privacy of Wearable Brain-Computer Interfaces</title><link href="https://anil.recoil.org/news/2022-enhancing-brain-security-1" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2022-enhancing-brain-security-1</id><summary type="html"><p>Preprint on security vulnerabilities in brain-computer interfaces</p>···&nbsp; <a href="https://anil.recoil.org/papers/2022-enhancing-brain-security.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Decentralised Capability-based Code Collaboration using Matrix</title><link href="https://anil.recoil.org/ideas/version-control-matrix" rel="alternate"></link><published>2022-01-01T00:00:00Z</published><updated>2022-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/version-control-matrix</id><summary type="html"><h1>Decentralised Capability-based Code Collaboration using Matrix</h1><p>This is an idea proposed in 2022 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a>.</p>···+on request from <a class="contact" href="https://bsky.app/profile/wedg.dev">Samuel Wedgwood</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Multicore Monthly: code review complete with Inria</title><link href="https://anil.recoil.org/notes/multicore-monthly-dec21" rel="alternate"></link><published>2021-12-21T00:00:00Z</published><updated>2021-12-21T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-dec21</id><summary type="html"><p>We've been working hard on OCaml multicore support, and went over to Paris to sit down with some core developers from Inria and work through code review of our proposed patches.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>2021 SDG Hackathon</title><link href="https://ancazugo.github.io/r/tidytuesday/sdg-hackathon.html" rel="alternate"></link><published>2021-11-06T00:00:00Z</published><updated>2021-11-06T00:00:00Z</updated><author><name>AndrésZG</name></author><id>https://ancazugo.github.io/r/tidytuesday/sdg-hackathon</id><summary type="html"><p>I participated in the 2021 <a href="https://www.sdghackathon.io/">SDG Hackathon</a> hosted by CORELAID Switzerland and the University of Basel. The data used was obtained from text analysis of projects realted to SDGs in Switzerland using five different systems. Each system detected a number of times each SDG in each project. I wanted to show how commonly each SDG is detected by each system from the dataset and for this purpose I created a rank view of the 17 SDGs using ggbump and integrating it with ggtext and several other packages. You can check out the code in the <a href="https://github.com/ancazugo/sdg-hackathon">GitHub repo</a>.</p></summary><category term="Andrés Zúñiga-González’s Blog"></category></entry><entry><title>Launching the Cambridge Centre for Carbon Credits</title><link href="https://anil.recoil.org/notes/4c-launch" rel="alternate"></link><published>2021-11-04T00:00:00Z</published><updated>2021-11-04T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/4c-launch</id><summary type="html"><p>I launched <a href="https://anil.recoil.org/projects/4c">4C</a> recently, and Pembroke College covers the launch with an interview with me.</p><p>The world is facing a large-scale environmental crisis. Two parallel and related strands of this are, first, the crisis in biodiversity and the rapid extinction of many species, recently addressed at the COP15 UN Biodiversity Conference in October, and second, the threat of climate change, the topic of last month’s COP26 summit in Glasgow. Pressure is growing on governments to execute nature-based solutions which will offset some of the most damaging impacts of these crises. While COP26 built some momentum, there is still a long way to go to turn promises into lasting change. More engagement with the private sector is urgently needed.</p><p>The solution to the crisis is two-pronged: we must engage in behaviour change to reduce unnecessary harmful emissions, and also invest in nature-based solutions at global scales to not only reduce, but ultimately reverse the effects of climate change and biodiversity loss.<cite>-- <a href="https://www.pem.cam.ac.uk/college/corporate-partnership/25th-anniversary-corporate-partnership-programme/25th-anniversary-11">Pembroke College</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>What is an Operating System?</title><link href="https://anil.recoil.org/notes/signals-and-threads" rel="alternate"></link><published>2021-11-03T00:00:00Z</published><updated>2021-11-03T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/signals-and-threads</id><summary type="html"><p>I am the latest person to feature on the first season of the <a href="https://signalsandthreads.com/what-is-an-operating-system/">Signals andhosted by <a class="contact" href="https://github.com/yminsky">Yaron Minsky</a> (you may recognise him as my co-author on <a href="https://anil.recoil.org/papers/rwo">Real World OCaml</a>).</p><p>Anil Madhavapeddy is an academic, author, engineer, entrepreneur, and OCaml aficionado. In this episode, Anil and Ron consider the evolving role of operating systems, security on the internet, and the pending arrival (at last!) of OCaml 5.0. They also discuss using Raspberry Pis to fight climate change; the programming inspiration found in British pubs and on Moroccan beaches; and the time Anil went to a party, got drunk, and woke up with a job working on the Mars Polar Lander.<cite>-- <a href="https://signalsandthreads.com/what-is-an-operating-system/">Signals and Threads</a></cite></p>+<p>I think I might be the first non- Jane Street person to be on their podcast! Quite the honour.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Hosting HotCRP</title><link href="https://mort.io/blog/setup-hotcrp/" rel="alternate"></link><published>2021-10-17T01:00:00Z</published><updated>2021-10-17T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/setup-hotcrp/</id><summary type="html"><p>I once had cause to setup<a href="https://read.seas.harvard.edu/~kohler/hotcrp/">HotCRP</a> for local hosting.···</span><span class="z-source z-shell z-bash"><span class="z-keyword z-operator z-assignment z-redirection z-shell">&lt;</span>/IfModule<span class="z-keyword z-operator z-assignment z-redirection z-shell">&gt;</span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">11.</span></span><span class="z-meta z-function-call z-arguments z-shell"> Add DNS entry for the name assigned (in my case, <span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-punctuation z-section z-group z-begin z-shell">`</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">hotcrp.DOMAIN</span></span><span class="z-punctuation z-section z-group z-end z-shell">`</span></span></span><span class="z-meta z-function-call z-shell"></span>)<span class="z-meta z-function-call z-shell"><span class="z-support z-function z-dot z-shell">.</span></span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>ILNP Interface</title><link href="https://ryan.freumh.org/ilnp-interface.html" rel="alternate"></link><published>2021-10-16T01:00:00Z</published><updated>2021-10-16T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/ilnp-interface.html</id><summary type="html"><article>···<li>On NAT traversal: <a href="https://tailscale.com/blog/how-nat-traversal-works/">https://tailscale.com/blog/how-nat-traversal-works/</a></li>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>OCaml Multicore Monthly: effect handling confirmed for 5.0</title><link href="https://anil.recoil.org/notes/multicore-monthly-sep21" rel="alternate"></link><published>2021-10-01T01:00:00Z</published><updated>2021-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-sep21</id><summary type="html"><p>We're making steady progress on getting multicore support merged into OCaml, including some great developer meetings where we achieved consensus with the core team to include support for effect handlers in the 5.0 release.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Forest preservation and restoration</title><link href="https://anil.recoil.org/notes/forests" rel="alternate"></link><published>2021-09-25T01:00:00Z</published><updated>2021-09-25T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/forests</id><summary type="html"><p>I track external notes and media articles here on forest preservation andrestoration as part of my work on <a href="https://anil.recoil.org/projects/4c">Trusted Carbon Credits</a>. Not complete, just a reading list.</p><li><a href="https://www.youtube.com/watch?v=yiw6_JakZFc">Can YOU Fix Climate Change?</a> (great short summary of the overall issues)</li>···<li><a href="https://www.sciencedirect.com/science/article/pii/S001671851930051X">Cryptocarbon: The promises and pitfalls of forest protection on a blockchain</a></li><li><a href="https://www.nature.com/articles/s41558-018-0285-8">Valuing climate damages at the country level</a> - nature climate change, 2018</li><li><a href="https://www.nature.com/articles/s41558-018-0282-y">Country-level social cost of carbon</a>, nature climate change 2018</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Decentralised tech on Recoil</title><link href="https://anil.recoil.org/notes/decentralised-stack" rel="alternate"></link><published>2021-09-19T01:00:00Z</published><updated>2021-09-19T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/decentralised-stack</id><summary type="html"><p><a class="contact" href="https://nick.recoil.org">Nick Ludlam</a> and I have self-hosted recoil.org since around 1996, typically for···+ported yet.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Roadmap for OCaml's online presence</title><link href="https://anil.recoil.org/notes/roadmap-ocamlorg-v3" rel="alternate"></link><published>2021-08-27T01:00:00Z</published><updated>2021-08-27T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/roadmap-ocamlorg-v3</id><summary type="html"><p>After a decade of good service, it's time to overhaul OCaml's online presence+edition of the OCaml.org website.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Tarballing some files</title><link href="https://mort.io/blog/tar-includes/" rel="alternate"></link><published>2021-08-25T01:00:00Z</published><updated>2021-08-25T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/tar-includes/</id><summary type="html"><p>I recently discovered, to some irritation, that the <code>--include PATTERN</code> optionto <code>tar</code> seems only to apply to directories – and if the <code>PATTERN</code> doesn’tmatch, it won’t traverse subdirectories. But I wanted to include <code>*.php</code> forsome reason. So instead pipe the output of <code>find</code>, or better these days,<a href="https://github.com/sharkdp/fd"><code>fd</code></a>:</p><pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">fd</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>e</span> php<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>0</span></span> <span class="z-keyword z-operator z-logical z-pipe z-shell">|</span> <span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">tar</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>cvjf</span> TARBALL.bz2<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>null</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>files-from</span> -</span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>How Computer Science Can Aid Forest Restoration</title><link href="https://anil.recoil.org/news/2021-arxiv-forestrycs-1" rel="alternate"></link><published>2021-08-01T01:00:00Z</published><updated>2021-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2021-arxiv-forestrycs-1</id><summary type="html"><p>Preprint about our working notes on how CS might contribute to forest preservation</p>···&nbsp; <a href="https://anil.recoil.org/papers/2021-arxiv-forestrycs.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Experiences with Effects</title><link href="https://anil.recoil.org/news/2021-oud-effects-1" rel="alternate"></link><published>2021-08-01T01:00:00Z</published><updated>2021-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2021-oud-effects-1</id><summary type="html"><p>Paper on programming with effects in OCaml</p>···&nbsp; <a href="https://anil.recoil.org/papers/2021-oud-effects.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cubes</title><link href="https://ryan.freumh.org/cubes.html" rel="alternate"></link><published>2021-06-03T01:00:00Z</published><updated>2021-06-03T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/cubes.html</id><summary type="html"><article>···+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>Retrofitting effect handlers onto OCaml</title><link href="https://anil.recoil.org/news/2021-pldi-retroeff-1" rel="alternate"></link><published>2021-06-01T01:00:00Z</published><updated>2021-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2021-pldi-retroeff-1</id><summary type="html"><p>Paper on retrofitting effects in OCaml presented in PLDI 2024</p>···&nbsp; <a href="https://anil.recoil.org/papers/2021-pldi-retroeff.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Network layer mobility</title><link href="https://ryan.freumh.org/network-layer-mobility.html" rel="alternate"></link><published>2021-05-10T01:00:00Z</published><updated>2021-05-10T01:00:00Z</updated><author><name>RyanG</name></author><id>https://ryan.freumh.org/network-layer-mobility.html</id><summary type="html"><article>···questions feel free to get in touch at <a href="mailto:ryan@freumh.html">ryan@freumh.org</a>.</span></p>+</article></summary><category term="ryan.freumh.org"></category></entry><entry><title>25 years of OCaml!</title><link href="https://www.dra27.uk/blog/platform/2021/05/09/ocaml-at-25.html" rel="alternate"></link><published>2021-05-09T01:00:00Z</published><updated>2021-05-09T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2021/05/09/ocaml-at-25</id><summary type="html"><p>On this day in 1996, Xavier Leroy <a href="https://sympa.inria.fr/sympa/arc/caml-list/1996-05/msg00003.html">announced Objective Caml 1.00</a> (the language wasn’t officially called OCaml until <a href="https://sympa.inria.fr/sympa/arc/caml-list/2012-07/msg00179.html">4.00.0 in July 2012</a>). I wouldn’t start using OCaml for another 7 years; I think I may have dropped Research Machines Basic by then and was mucking around with a mix of Visual Basic, Turbo Pascal and Delphi, but I hadn’t yet got an email address either.</p><p>For whatever reason, the <code class="language-plaintext highlighter-rouge">1.00</code> tag deletes the boot images, but they can be taken from the <a href="https://github.com/dra27/ocaml/tree/2de35753f7b43b11098f7d25a09b8cb904c1a2ca/boot">commit before</a>. I could get the runtime to build quite easily on Ubuntu, but alas while it appeared to be able to run <code class="language-plaintext highlighter-rouge">boot/ocamllex</code>, <code class="language-plaintext highlighter-rouge">boot/ocamlc</code> was just segfaulting. I debated firing up my old dual-Pentium III which apparently had Slackware 10 on it, but I thought I’d give the Windows port a go first!</p>···+<p>Here’s to the next 25 years!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Void Processes: Minimising privilege by default</title><link href="https://anil.recoil.org/ideas/void-processes" rel="alternate"></link><published>2021-01-01T00:00:00Z</published><updated>2021-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/void-processes</id><summary type="html"><h1>Void Processes: Minimising privilege by default</h1><p>This is an idea proposed in 2021 as a Cambridge Computer Science Part III or MPhil project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://blog.hillion.co.uk">Jake Hillion</a>.</p>···<li>The dissertation is available as a <a href="https://blog.hillion.co.uk/posts/void-processes/dissertation/jsh77-dissertation.pdf">PDF</a>, with associated <a href="https://blog.hillion.co.uk/posts/void-processes/dissertation/">blog post</a> and <a href="https://github.com/JakeHillion/void-processes">LaTeX source</a>.</li><li>The source code to the void orchestrator prototype is at <a href="https://github.com/JakeHillion/void-orchestrator">jakehillion/void-orchestrator</a>.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Security analysis of brain-computing interfaces</title><link href="https://anil.recoil.org/ideas/brain-interface-security" rel="alternate"></link><published>2021-01-01T00:00:00Z</published><updated>2021-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/brain-interface-security</id><summary type="html"><h1>Security analysis of brain-computing interfaces</h1><p>This is an idea proposed in 2021 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Malachy O'Connor Brown</a> and <a class="contact" href="https://anil.recoil.org/">Oscar Hill</a>. It was co-supervised with <a class="contact" href="https://zatkh.github.io/">Zahra Tarkhani</a> and <a class="contact" href="https://lorenaqendro.github.io">Lorena Qendro</a>.</p>···<li><strong>Adversarial attacks on BCI.</strong> We explore various methods to detect and analyze security threats on BCI ML models, including attacks based on perturbed inputs, inference, and model patterns. You need to have development skills (e.g., C, C++, Python) and experience with at least one ML/Deep Learning framework such as PyTorch or TensorFlow. Previous work on embedded devices and adversarial attacks is preferred.</li><p>The results of this work were written up in <a href="https://anil.recoil.org/papers/2022-enhancing-brain-security">Enhancing the Security &amp; Privacy of Wearable Brain-Computer Interfaces</a>,+which is a really fun but rather worrying read!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Exploring Concurrency in Agent-Based Modelling with Multicore OCaml</title><link href="https://anil.recoil.org/ideas/ocaml-forest-sim" rel="alternate"></link><published>2021-01-01T00:00:00Z</published><updated>2021-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/ocaml-forest-sim</id><summary type="html"><h1>Exploring Concurrency in Agent-Based Modelling with Multicore OCaml</h1><p>This is an idea proposed in 2021 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Martynas Sinkievič</a>.</p>···<li>The source code is on a <a href="https://github.com/mSinkievic/troll-ocaml">private repository on GitHub</a>. Please contact <a class="contact" href="https://anil.recoil.org/">Martynas Sinkievič</a> to request access.</li><li>The dissertation is available on request for interested students from <a class="contact" href="https://anil.recoil.org">Anil Madhavapeddy</a> but has not otherwise been made public.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Banyan: Coordination-Free Distributed Transactions over Mergeable Types</title><link href="https://anil.recoil.org/news/2020-asplas-banyan-1" rel="alternate"></link><published>2020-11-01T00:00:00Z</published><updated>2020-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2020-asplas-banyan-1</id><summary type="html"><p>Paper on Banyan for coordination-free distributed transactions in ASPLAS 2020</p>···&nbsp; <a href="https://anil.recoil.org/papers/2020-asplas-banyan.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using memtrace on Windows</title><link href="https://www.dra27.uk/blog/platform/2020/10/08/windows-memtrace.html" rel="alternate"></link><published>2020-10-08T01:00:00Z</published><updated>2020-10-08T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2020/10/08/windows-memtrace</id><summary type="html"><p>It is said that good things come to those who wait. Jacques-Henri Jourdan demonstrated <a href="https://ocaml.org/meetings/ocaml/2016/Jourdan-statistically_profiling_memory_in_OCaml.pdf">Statistically profiling memory in OCaml</a> at the 2016 OCaml Workshop and experimental branches of it existed for OCaml 4.03–4.07 in opam. Parts of the work were merged in OCaml 4.10 and the final sections landed with 4.11. The compiler provides support in the form of a series of hooks in various parts of the runtime’s allocation and garbage collection routines. A few weeks ago, Jane Street released <a href="https://github.com/janestreet/memtrace">memtrace</a> and <a href="https://github.com/janestreet/memtrace_viewer">Memtrace viewer</a> and earlier this week <a href="https://blog.janestreet.com/finding-memory-leaks-with-memtrace/">blogged about its use</a>. I thought I’d quickly share the experience of using it on native Windows.</p><p>At present, although the memtrace library is portable, the memtrace-viewer itself is not (as it happens, this is simply down to Core’s command line parser pulling in a little too much Unix-specific stuff, and the use of Async as a backend to Cohttp, rather than Lwt, but that’s for another time!). However, WSL to the rescue…</p>···<p><img alt="memtrace-viewer in action" src="https://www.dra27.uk/assets/2020-10-08/2020-10-08-leaky.png" /></p>+<p>Obviously, at some point it’ll be nice not to have to rely on a Unix subsystem in order to run the viewer, but meanwhile it’s great to have a workflow on the same machine to be able to investigate memory leaks in native Windows programs!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Data visualisation links</title><link href="https://mort.io/blog/dataviz/" rel="alternate"></link><published>2020-09-07T01:00:00Z</published><updated>2020-09-07T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/dataviz/</id><summary type="html"><p>Some possibly useful data visualisation links:</p><li><a href="https://medium.economist.com/why-you-sometimes-need-to-break-the-rules-in-data-viz-4d8ece284919">https://medium.economist.com/why-you-sometimes-need-to-break-the-rules-in-data-viz-4d8ece284919</a></li><li><a href="https://colororacle.org/">https://colororacle.org/</a></li>+</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>The OCaml Platform: 2020</title><link href="https://anil.recoil.org/news/2020-oud-platform-1" rel="alternate"></link><published>2020-09-01T01:00:00Z</published><updated>2020-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2020-oud-platform-1</id><summary type="html"><p>Annual update on the OCaml Platform at the OCaml Workshop</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>State of the OCaml Platform 2020</title><link href="https://anil.recoil.org/news/b11188ba-0f97-4ec4-b372-fa3cea0821ab-1" rel="alternate"></link><published>2020-08-28T01:00:00Z</published><updated>2020-08-28T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/b11188ba-0f97-4ec4-b372-fa3cea0821ab-1</id><summary type="html"><p>Talk on the state of the OCaml Platform in 2020</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Renovating an old media PC</title><link href="https://mort.io/blog/mediapc/" rel="alternate"></link><published>2020-08-28T01:00:00Z</published><updated>2020-08-28T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/mediapc/</id><summary type="html"><p>Some notes from my first attempt to renovate an old media PC that had a SYSLINUX···</span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">sudo</span></span><span class="z-meta z-function-call z-arguments z-shell"> lshw<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>C</span> storage<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>short</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>numeric</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">sudo</span></span><span class="z-meta z-function-call z-arguments z-shell"> apk add lsblk</span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">sudo</span></span><span class="z-meta z-function-call z-arguments z-shell"> lsblk</span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>OCaml Multicore Monthly: systhreads compatibility merged</title><link href="https://anil.recoil.org/notes/multicore-monthly-sep20" rel="alternate"></link><published>2020-08-20T01:00:00Z</published><updated>2020-08-20T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-sep20</id><summary type="html"><p>The big advance in the multicore OCaml branch is that we restored compatibility···<cite>-- <a href="https://discuss.ocaml.org/t/multicore-ocaml-september-2020/6565">me, on the discussion forum</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Retrofitting parallelism onto OCaml</title><link href="https://anil.recoil.org/news/2020-icfp-retropar-1" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2020-icfp-retropar-1</id><summary type="html"><p>Won best paper award at ICFP 2020 for our paper on retrofitting parallelism onto OCaml!</p>···&nbsp; <a href="https://anil.recoil.org/papers/2020-icfp-retropar.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Parallelising your OCaml Code with Multicore OCaml</title><link href="https://anil.recoil.org/news/2020-oud-parallelising-1" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2020-oud-parallelising-1</id><summary type="html"><p>Paper on how to parallelise OCaml code at the OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2020-oud-parallelising.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml-CI: A Zero-Configuration CI</title><link href="https://anil.recoil.org/news/2020-oud-ci-1" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2020-oud-ci-1</id><summary type="html"><p>Presented the new OCaml DSL for continuous integration at the OCaml Workshop</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Making GPS accurate in dense forests using sensor fusion</title><link href="https://anil.recoil.org/ideas/sensor-fusion-vslam-forests" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/sensor-fusion-vslam-forests</id><summary type="html"><h1>Making GPS accurate in dense forests using sensor fusion</h1><p>This is an idea proposed in 2020 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://keshav123456.github.io">Keshav Sivakumar</a>. It was co-supervised with <a class="contact" href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page">Srinivasan Keshav</a> and <a class="contact" href="https://coomeslab.org">David A Coomes</a>.</p><p>Current GPS solutions are either very expensive ($8k+) or have relatively poor accuracies (10m+) under dense forest canopy. This project explores how to determine our location accurately in a forest area where we travel by foot under canopy without a GPS signal.</p>···<li>What constraints and advantages do these solutions have (in terms of power, light, cost, etc)</li><p>We observe that a lot of SLAM algorithms exist these days, but most of the recent research is on optimizing for monocular cameras, whereas we have the luxury of using cameras built for this purpose. A lot of options also exist with regards to depth cameras/fish eye cameras that specialize for localisation/mapping use cases. We chose the Intel T265 as it is part of a family of widely used products, and comes with a usable library (librealsense). It can also provide a good benchmark for base VSLAM, there is huge scope for greater accuracy by using depth cameras or LIDAR, but it is the cheapest, easiest solution among the current industry grade solutions. Interestingly, even the latest iPad Pro has LIDAR built-in now, so this is a solid approach!</p>+<p>The project was completed successfully (remotely due to pandemic), with details available in <a href="https://forests.notion.site/Keshav-Sivakumar-1fe07a2ebf0e4c318c50ac5e15bedae5">the PDF writeup and slides</a>, and <a href="https://github.com/keshav123456/UROP2020">code notebooks</a> on GitHub.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Discord discord</title><link href="https://mort.io/blog/discord/" rel="alternate"></link><published>2020-08-01T01:00:00Z</published><updated>2020-08-01T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/discord/</id><summary type="html"><p>So for some reason I wanted to do this – use Discord on an iPad without···+<p>Seems something of a palaver but hey, these twisted webs we weave.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>OCaml Multicore Monthly: preprint paper available</title><link href="https://anil.recoil.org/notes/multicore-monthly-apr20" rel="alternate"></link><published>2020-04-27T01:00:00Z</published><updated>2020-04-27T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-apr20</id><summary type="html"><p>In the April OCaml multicore monthly, we have a preprint available of our ICFP submission about the OCaml 5 multicore runtime.+<em>(Update: This paper actually won the ICFP best paper award later in the year! Read it at &quot;<a href="https://anil.recoil.org/papers/2020-icfp-retropar">Retrofitting parallelism onto OCaml</a>&quot;).</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The First Billion Real Deployments of Unikernels</title><link href="https://anil.recoil.org/news/c09ed36f-6ad5-4254-a0ce-3ca3398f38a3-1" rel="alternate"></link><published>2020-02-26T00:00:00Z</published><updated>2020-02-26T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/c09ed36f-6ad5-4254-a0ce-3ca3398f38a3-1</id><summary type="html"><p>Part 2</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Rebuilding Operating Systems with Functional Principles</title><link href="https://anil.recoil.org/news/d456e4bc-bce6-45ad-9d2e-102f834ec400-1" rel="alternate"></link><published>2020-02-26T00:00:00Z</published><updated>2020-02-26T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/d456e4bc-bce6-45ad-9d2e-102f834ec400-1</id><summary type="html"><p>Delivered the distinguished seminar series at St Andrews on rebuilding Operating Systems with functional principles</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming the Next Trillion Embedded Devices</title><link href="https://anil.recoil.org/news/287364fa-b59c-4b9f-812d-d81cc0c992a5-1" rel="alternate"></link><published>2020-02-26T00:00:00Z</published><updated>2020-02-26T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/287364fa-b59c-4b9f-812d-d81cc0c992a5-1</id><summary type="html"><p>Part 3</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Multicore Monthly: starting upstream to OCaml</title><link href="https://anil.recoil.org/notes/multicore-monthly-jan20" rel="alternate"></link><published>2020-01-29T00:00:00Z</published><updated>2020-01-29T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/multicore-monthly-jan20</id><summary type="html"><p>We started the process of upstreaming our <a href="https://anil.recoil.org/papers/2014-oud-multicore">multicore OCaml</a> branch to mainline OCaml, and so I started posting regular updates to the community forum.</p><p>The most common question we get is how to contribute to the overall multicore effort. As I noted last year, we are now in the process of steadily upstreaming our efforts to mainline OCaml. Therefore, the best way by far to contribute is to test for regressions or opportunities for improvements in the patches that are outstanding in the main OCaml repository.<cite>-- <a href="https://discuss.ocaml.org/t/multicore-ocaml-january-2020-update/5090">me, on the discussion forum</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Information Flow for Trusted Execution</title><link href="https://anil.recoil.org/projects/difc-tee" rel="alternate"></link><published>2020-01-01T00:00:00Z</published><updated>2020-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/difc-tee</id><summary type="html"><div>···stages with <a class="contact" href="https://patrick.sirref.org">Patrick Ferris</a> and <a class="contact" href="https://mynameismwd.org">Michael Dales</a>.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Setting up a Macbook</title><link href="https://mort.io/blog/setup-new-laptop/" rel="alternate"></link><published>2020-01-01T00:00:00Z</published><updated>2020-01-01T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/setup-new-laptop/</id><summary type="html"><p>This is the set of things that I roughly did to set up my old new Macbook:<h2 id="keyboard"><a class="zola-anchor" href="https://mort.io/blog/setup-new-laptop/#keyboard">Keyboard</a></h2>···</span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-punctuation z-section z-group z-begin z-shell">`</span><span class="z-punctuation z-section z-group z-end z-shell">`</span></span><span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-punctuation z-section z-group z-begin z-shell">`</span><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">bash</span></span></span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-meta z-group z-expansion z-command z-backticks z-shell"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">opam</span></span><span class="z-meta z-function-call z-arguments z-shell"> install<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>y</span> ocal</span>+</span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>OpenBSD cloud hosting options</title><link href="https://anil.recoil.org/notes/openbsd-hosting" rel="alternate"></link><published>2019-08-29T01:00:00Z</published><updated>2019-08-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/openbsd-hosting</id><summary type="html"><p>I <a href="https://twitter.com/avsm/status/1167012354556669952">asked on Twitter</a> about hosting options for OpenBSD on cloud providers, so that we could have some alternative options for Recoil. We have a strong preference for bare-metal and not VMs when it comes to OpenBSD. Options that came back were:</p>···<li>Good <a href="https://twitter.com/vphantom/status/1167020959771049984">recommendation</a> from Stephane</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The OCaml Platform in 2019</title><link href="https://anil.recoil.org/news/2019-ocaml-platform-1" rel="alternate"></link><published>2019-08-01T01:00:00Z</published><updated>2019-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2019-ocaml-platform-1</id><summary type="html"><p>Annual update on the OCaml Platform in 2019</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-ocaml-platform.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS 4: the dawn of practical build systems for exotic targets</title><link href="https://anil.recoil.org/news/2019-mirage-build-1" rel="alternate"></link><published>2019-08-01T01:00:00Z</published><updated>2019-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2019-mirage-build-1</id><summary type="html"><p>Paper on the MirageOS 4 build system at OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-mirage-build.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming Unikernels in the Large via Functor Driven Development</title><link href="https://anil.recoil.org/news/2019-mirage-functors-1" rel="alternate"></link><published>2019-05-01T01:00:00Z</published><updated>2019-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2019-mirage-functors-1</id><summary type="html"><p>Preprint on programming unikernels with ML modules</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-mirage-functors.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Snape: The Dark Art of Handling Heterogeneous Enclaves</title><link href="https://anil.recoil.org/news/2019-edgesys-snape-1" rel="alternate"></link><published>2019-03-01T00:00:00Z</published><updated>2019-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2019-edgesys-snape-1</id><summary type="html"><p>Paper on a framework to rearchitect applications for better TEE support at EdgeSys 2019</p>···&nbsp; <a href="https://anil.recoil.org/papers/2019-edgesys-snape.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Falsehoods</title><link href="https://mort.io/blog/falsehoods/" rel="alternate"></link><published>2019-01-11T00:00:00Z</published><updated>2019-01-11T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/falsehoods/</id><summary type="html"><p>Being a list of some cool “Falsehoods programmers believe about …” sites, nowredundant thanks to <a href="https://github.com/kdeldycke/awesome-falsehood">https://github.com/kdeldycke/awesome-falsehood</a>:</p><li><a href="http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time">…time</a></li>···<li><a href="http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/">…names</a></li><li><a href="https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/">…addresses</a></li><li><a href="http://wiesmann.codiferes.net/wordpress/?p=15187&amp;lang=en">…geography</a></li>+</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>Distributed Task Scheduling Framework over Irmin</title><link href="https://anil.recoil.org/ideas/distributed-tasks-irmin" rel="alternate"></link><published>2019-01-01T00:00:00Z</published><updated>2019-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/distributed-tasks-irmin</id><summary type="html"><h1>Distributed Task Scheduling Framework over Irmin</h1><p>This is an idea proposed in 2019 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Mohammed Daudali</a>.</p><p>Distributed computation and task scheduling frameworks can be decentralised with minimal cost to performance. Furthermore, this decentralisation can provide a significant reduction in the trusted computing base and complexity of the system, affording end consumers a greater level of confidence in the integrity of the results. Moreover, carefully designed persistent and transient data structures can augment this confidence by providing strong isolation guarantees in a multi-tenant system, whilst retaining full transparency over the dynamic data flow graph. This can all be achieved with an API that interfaces directly with conventional developer tools, enabling end users to easily verify that the computation directly aligns with their expectations. Detailed metadata can ensure a fair and transparent pricing structure for both service providers and consumers by carefully tracking the resource usage. Together, this allows open-source communities to remain completely transparent whilst providing non-developer end users a simpler and more accessible downloadable package that can be independently verified.</p><p>This project will investigate building a composable task scheduler over <a href="https://github.com/mirage/irmin">Irmin</a>. The core of this project started with a single server model, in which a large number of workers can independently clone and interact with a persistent job queue CRDT. Crucially, each worker schedules tasks using only local knowledge, giving a high probability that at least two workers are working on the same task. This has a twofold benefit - completed work can be independently verified by a number of different workers, and two, work in progress by stragglers can be selected by other workers, which can result in a lower time to completion. By independently sampling and verifying work, we remove the need for implicitly trusting individual workers. Adversaries must now compromise all worker nodes to have the required effect - compromising N - 1 workers results in a non-zero probability of the attack being detected. Given a heterogeneous set of worker machines, all under the control of different and independent entities, this attack becomes significantly harder. The project will investigate suitable sampling schedules for calculating the pareto frontier of over-committing work versus cluster throughput.</p>···<li>The dissertation writeup is in a private <a href="https://github.com/mdaudali/dissertation_writeup">GitHub repository</a> and the Irmin implementation code also in a <a href="https://github.com/mdaudali/Dissertation">private repository</a>. Please contact the author directly for access.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A strongly consistent index for email using git and MirageOS</title><link href="https://anil.recoil.org/ideas/git-maildir" rel="alternate"></link><published>2019-01-01T00:00:00Z</published><updated>2019-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/git-maildir</id><summary type="html"><h1>A strongly consistent index for email using git and MirageOS</h1><p>This is an idea proposed in 2019 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/odnh">Oliver Hope</a>. It was co-supervised with <a class="contact" href="https://github.com/dra27">David Allsopp</a>.</p><p><a href="https://en.wikipedia.org/wiki/Maildir">Maildir</a> is a widely used format for storing emails. Its main benefit is that it uses the filesystem in such a way that client programs do not have to handle locking themselves. The downside of this is that it makes it hard to create a consistent index as we cannot guarantee that the filesystem is in a consistent state when we try to update it. If we did have a consistent index, it would allow for safer concurrent support and the implementation of new features.</p><p>The aim of this project therefore is to solve the consistency problem. This can be done by using git, the version control system, to build an overlay on top of maildir in the filesystem, allowing multiple filesystem operations to be bundled into commits. These can be used to keep track of all changes made to the maildir. As these changes are being recorded by a version control system, we can be sure that any index built on top will be strongly consistent. As git also provides branching, we can extend this model to add new features described in the possible extensions section.</p><p>The project successfully implemented this git overlay using libraries provided by <a href="https://github.com/mirage">MirageOS</a> which provide git functionality, maildir operations, and even email parsing. With the overlay, and therefore consistent index implemented, the project was able to make many more guarantees about the state of the maildir at any time. This allowed for dealing with conflicting operations in an easier and more reliable manner. Furthermore, the overlay also provided the possibility of easily implementing novel features such as roll-back and separate branches for different use cases.</p>+<p><a class="contact" href="https://github.com/odnh">Oliver Hope</a> published his <a href="https://github.com/odnh/gitmaildir">dissertation repository</a> and the <a href="https://github.com/odnh/gitmaildir">source code</a> to gitmaildir online.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Wipeout</title><link href="https://mort.io/blog/wipeout/" rel="alternate"></link><published>2018-12-17T00:00:00Z</published><updated>2018-12-17T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/wipeout/</id><summary type="html"><p>I recently decided to go through some old PCs and hard disks (yes, actual···</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-string z-unquoted z-heredoc z-shell">/dev/vg0/lv_backup /backup xfs defaults 0 0</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-string z-unquoted z-heredoc z-shell"><span class="z-keyword z-control z-heredoc-token z-shell">EOF</span></span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">mount</span></span><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>a</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> -</span>v <span class="z-comment z-line z-number-sign z-shell"><span class="z-punctuation z-definition z-comment z-begin z-shell">#</span></span><span class="z-comment z-line z-number-sign z-shell"> mount everything, verbosely</span><span class="z-comment z-line z-number-sign z-shell">+</span></span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>The OCaml Platform 1.0 with Reason ML</title><link href="https://crank.recoil.org/videos/watch/13cf3878-7436-4512-844e-f72f36425bc7" rel="alternate"></link><published>2018-12-11T10:57:40Z</published><updated>2018-12-11T10:57:40Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/videos/13cf3878-7436-4512-844e-f72f36425bc7</id><summary type="html"><h2><a href="https://anil.recoil.org/videos/13cf3878-7436-4512-844e-f72f36425bc7">The OCaml Platform 1.0 with Reason ML</a> <span class="title-date">/ Dec 2018</h2>+<p>Speaking about the OCaml Platform at the ReasonML meetup hosted by Pusher.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>New opam repository layout for large libraries</title><link href="https://anil.recoil.org/notes/ocaml-opam-new-layout" rel="alternate"></link><published>2018-11-19T00:00:00Z</published><updated>2018-11-19T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ocaml-opam-new-layout</id><summary type="html"><p>Managing package manager constraints is getting difficult, particularly given the growth of the number of packages in the <a href="https://github.com/ocaml/opam-repository">opam repository</a>. I'm therefore laying out a new mechanism for the OCaml contributors to submit large package sets, such as those from <a href="https://janestreet.com">Jane Street</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A modular foreign function interface</title><link href="https://anil.recoil.org/news/2018-socp-modular-ffi-1" rel="alternate"></link><published>2018-10-01T01:00:00Z</published><updated>2018-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2018-socp-modular-ffi-1</id><summary type="html"><p>Journal paper on building modular foreign function interfaces</p>···&nbsp; <a href="https://anil.recoil.org/papers/2018-socp-modular-ffi.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Foundations of Computer Science</title><link href="https://anil.recoil.org/notes/focs" rel="alternate"></link><published>2018-09-02T01:00:00Z</published><updated>2018-09-02T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/focs</id><summary type="html"><p>Here are the various repos used to create the interactive <a href="https://anil.recoil.org/notes/teaching">teaching</a> environment···on this with me are <a class="contact" href="https://www.cst.cam.ac.uk/people/jdy22">Jeremy Yallop</a>, <a class="contact" href="https://github.com/dra27">David Allsopp</a> and <a class="contact" href="https://github.com/jonludlam">Jon Ludlam</a>, with Jon+being the currently active additional lecturer on the course as of 2024/2025.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The joys of Dune vendoring</title><link href="https://www.dra27.uk/blog/platform/2018/08/15/dune-vendoring.html" rel="alternate"></link><published>2018-08-15T01:00:00Z</published><updated>2018-08-15T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2018/08/15/dune-vendoring</id><summary type="html"><p>Of the many wonderful features provided by <a href="https://github.com/ocaml/dune">Dune</a>, my personal favourite remains its composability. It doesn’t gain much mention in the manual because, well, there’s not <em>that</em> much to explain about it beyond the simple fact that if you put separate Dune projects in subdirectories underneath your current project, then Dune will use those projects in preference to opam-installed libraries. This allows for a far superior workflow to developing using opam pins, as can be seen from my own recent addition of features to Mirage’s <a href="https://github.com/hannesm/logs-syslog">logs-syslog</a> library, which also required an addition to one of its dependencies, <a href="https://github.com/verbosemode/syslog-message">syslog-message</a>. Neither of these libraries are presently built using Dune, however porting <a href="https://github.com/dra27/logs-syslog/tree/dune">them</a> <a href="https://github.com/dra27/syslog-message/tree/dune">both</a> was not particularly difficult, and I thought it would be interesting to show how much more efficient the process of developing my recent patches would have been with Dune, rather than with <code class="language-plaintext highlighter-rouge">opam pin</code>.</p>···<p>Dune rebuilds just the binaries - it knows that the only thing which has changed is where the libraries are coming from, so it doesn’t bother doing any <code class="language-plaintext highlighter-rouge">ocamldep</code> calls.</p>+<p>Remember, there are just two kinds of OCaml project: those which have switched to Dune, and those which need to!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Bounding data races in space and time</title><link href="https://anil.recoil.org/news/2018-pldi-memorymodel-1" rel="alternate"></link><published>2018-06-01T01:00:00Z</published><updated>2018-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2018-pldi-memorymodel-1</id><summary type="html"><p>Paper on the OCaml memory model and underlying theory at PLDI 2018</p>···&nbsp; <a href="https://anil.recoil.org/papers/2018-pldi-memorymodel.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Urgent problem with camlp5 7.03 and macOS OCaml 4.06.1</title><link href="https://www.dra27.uk/blog/platform/2018/05/04/opam-camlp5-system.html" rel="alternate"></link><published>2018-05-04T01:00:00Z</published><updated>2018-05-04T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2018/05/04/opam-camlp5-system</id><summary type="html"><p><em>This was originally on the posted on the <a href="https://opam.ocaml.org/blog/camlp5-system/">OCaml Platform Blog</a>.</em></p><h1 id="packaging-problem-with-opam-repository-camlp5-703-when-upgrading-to-ocaml-4061">Packaging problem with opam-repository camlp5 7.03 when upgrading to OCaml 4.06.1</h1>···+<p>Owing to the changes made to how opam 2 processes package installations, opam 2 has been unaffected by this situation but opam 2’s lead developer <a href="https://github.com/AltGr">@AltGr</a> freely admits that this is more by luck than judgement. However, the second release candidate for opam 2 includes mandatory support for sandboxing on Linux and macOS. Sandboxing package building and installation will protect opam 2 against future issues of this kind, as a malfunctioning build system will be unable to operate on files outside its build directory or, during installation, switch root.</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Concurrent System Programming with Effect Handlers</title><link href="https://anil.recoil.org/news/2017-tfp-effecthandlers-1" rel="alternate"></link><published>2018-04-01T01:00:00Z</published><updated>2018-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2017-tfp-effecthandlers-1</id><summary type="html"><p>Paper on concurrent systems programming with effect handlers at TFP 2017</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-tfp-effecthandlers.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>An architecture for interspatial communication</title><link href="https://anil.recoil.org/news/2018-hotpost-osmose-1" rel="alternate"></link><published>2018-04-01T01:00:00Z</published><updated>2018-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2018-hotpost-osmose-1</id><summary type="html"><p>Paper on the interspatial networking architecture at HotPOST 2018</p>···&nbsp; <a href="https://anil.recoil.org/papers/2018-hotpost-osmose.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Founded Tarides and looking to hire OCaml hackers</title><link href="https://anil.recoil.org/notes/founded-tarides" rel="alternate"></link><published>2018-03-02T00:00:00Z</published><updated>2018-03-02T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/founded-tarides</id><summary type="html"><p>I'm delighted to report that I'm helping my long-time collaborator <a class="contact" href="https://github.com/samoht">Thomas Gazagnaire</a> to return to his OCaml roots from Docker. He has just founded Tarides, a startup in Paris with the goal of advancing the open source OCaml ecosystem.</p><p>Founded in Paris in early 2018, Tarides helps developers and companies build secure, performant and resource-efficient network and storage services. We are using MirageOS to run applications without the overhead of a traditional operating system and Irmin to create scalable distributed applications. Tarides offers commercial support and commercial development services for companies interested to run MirageOS or Irmin as part of their technology stack.<cite> -- <a href="https://discuss.ocaml.org/t/tarides-is-looking-for-software-engineers-to-work-on-mirageos-and-irmin/1690">Thomas Gazagnaire</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A pain in the num</title><link href="https://www.dra27.uk/blog/platform/2018/01/31/num-system.html" rel="alternate"></link><published>2018-01-31T00:00:00Z</published><updated>2018-01-31T00:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2018/01/31/num-system</id><summary type="html"><h1 id="fixing-a-packaging-error-with-num-on-ocaml-4060-system-switches">Fixing a packaging error with num on OCaml 4.06.0 system switches</h1><p>Back in July 2012, the release of OCaml 4.00.0 marked the start of a slow process to remove libraries and tools from the distribution which are not directly related to the compiler and the OCaml Standard Library. For <a href="https://github.com/ocaml/ocaml/tree/4.06.0">OCaml 4.06.0</a> it was the turn of the <a href="https://github.com/ocaml/num">Num</a> library. It is now available as the <a href="https://opam.ocaml.org/packages/num">num package</a> in opam for OCaml 4.06.0 and with a dummy <code class="language-plaintext highlighter-rouge">.0</code> version which is “installed” for prior versions of the compiler which include the library in the distribution.</p>···<p>All of which means macOS Homebrew users may wish to clean up their system compiler in advance. It’s fairly easy to do: it just means deleting <code class="language-plaintext highlighter-rouge">arith_flags.*</code>, <code class="language-plaintext highlighter-rouge">arith_status.*</code>, <code class="language-plaintext highlighter-rouge">big_int.*</code>, <code class="language-plaintext highlighter-rouge">int_misc.*</code>. <code class="language-plaintext highlighter-rouge">nat.*</code>, <code class="language-plaintext highlighter-rouge">ratio.*</code>, <code class="language-plaintext highlighter-rouge">nums.*</code>, <code class="language-plaintext highlighter-rouge">libnums.*</code> and <code class="language-plaintext highlighter-rouge">stublibs/dllnums.*</code> from the directory given by <code class="language-plaintext highlighter-rouge">ocamlc -where</code>. <a href="https://github.com/ocaml/opam-repository/pull/11300">PR#11300</a> adds this advice to the num package.</p>+<p>We’ll try to be a little more careful when the <code class="language-plaintext highlighter-rouge">graphics</code> and <code class="language-plaintext highlighter-rouge">str</code> libraries are eventually removed from the compiler!</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Probabilistic Programming in OCaml</title><link href="https://anil.recoil.org/ideas/prob-programming-owl" rel="alternate"></link><published>2018-01-01T00:00:00Z</published><updated>2018-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/prob-programming-owl</id><summary type="html"><h1>Probabilistic Programming in OCaml</h1><p>This is an idea proposed in 2018 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Hari Chandrasekaran</a>. It was co-supervised with <a class="contact" href="https://github.com/ctk21">Tom Kelly</a> and <a class="contact" href="https://github.com/ryanrhymes">Liang Wang</a>.</p>···<p>The dissertation is not available online; contact <a class="contact" href="https://anil.recoil.org/">Hari Chandrasekaran</a> directly to obtain a+copy.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Interspatial OS</title><link href="https://anil.recoil.org/projects/osmose" rel="alternate"></link><published>2018-01-01T00:00:00Z</published><updated>2018-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/osmose</id><summary type="html"><div>···<li><a href="https://anil.recoil.org/papers/2024-socc-murmuration">Scheduling for Reduced Tail Task Latencies in Highly Utilized Datacenters</a> which explores a decentralised scheduling architecture for lower job completion times</li>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CausalRPC: a traceable distributed computation framework</title><link href="https://anil.recoil.org/ideas/causal-rpc" rel="alternate"></link><published>2018-01-01T00:00:00Z</published><updated>2018-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/causal-rpc</id><summary type="html"><h1>CausalRPC: a traceable distributed computation framework</h1><p>This is an idea proposed in 2018 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://craigfe.io">Craig Ferguson</a>.</p><p>The project aims to implement an RPC framework in OCaml using the <a href="https://github.com/mirage/irmin">Irmin</a> distributed database library as a network substrate. It will explore the trade-offs of a novel data-oriented approach to RPC in which race conditions between clients are resolved automatically by the middleware layer. The core deliverable is a demonstration of an RPC client remotely executing functions with Irmin-serialisable parameters on a server capable of handling concurrent client requests.</p><p>The project was completed successfully, with an implementation of <a href="https://github.com/craigfe/causal-rpc">CausalRPC</a>, a distributed computation framework satisfying the above criteria. The approach of making the statefulness of RPC explicit was surprisingly effective, allowing CausalRPC to provide stronger consistency and traceability guarantees than conventional RPC systems. This broadened the scope of the project considerably, allowing for a variety of extensions to explore the inherent trade-offs of the approach. The final version of CausalRPC supported fault-tolerant worker clusters and is compatible with <a href="https://mirage.io">MirageOS</a>.</p>···<p>The project PDF writeup is publically <a href="https://www.craigfe.io/causalrpc.pdf">available</a>, and <a class="contact" href="https://craigfe.io">Craig Ferguson</a> won the G-Research Prize for Best Individual Project 2018 departmental prize.</p><p><a class="contact" href="https://craigfe.io">Craig Ferguson</a> also gave a <a href="https://ocaml.org/workshops/ocaml-workshop-2019">talk about CausalRPC</a> at the 2019 OCaml Workshop. Unfortunately the videos of that year's ICFP don't seem to have made it online, but the <a href="https://github.com/CraigFe/causal-rpc-talk">slides are available</a>.</p>+<p><a class="contact" href="https://craigfe.io">Craig Ferguson</a> followed up with a podcast where he discussed his subsequent work on Irmin in 2022:</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Back to the Future</title><link href="https://mort.io/blog/back-to-the-future/" rel="alternate"></link><published>2017-12-14T00:00:00Z</published><updated>2017-12-14T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/back-to-the-future/</id><summary type="html"><blockquote>···<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">log</span></span><span class="z-meta z-function-call z-arguments z-shell"> show<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>style</span> syslog<span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>debug</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>info</span><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>start</span> YYYY-MM-DD <span class="z-punctuation z-separator z-continuation z-line z-shell">\</span></span></span><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-arguments z-shell"><span class="z-variable z-parameter z-option z-shell"><span class="z-punctuation z-definition z-parameter z-shell"> --</span>predicate</span> <span class="z-string z-quoted z-single z-shell"><span class="z-punctuation z-definition z-string z-begin z-shell">'</span>senderImagePath contains[cd] &quot;TimeMachine&quot;<span class="z-punctuation z-definition z-string z-end z-shell">'</span></span><span class="z-punctuation z-separator z-continuation z-line z-shell">\+</span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Quelle dommage</title><link href="https://mort.io/blog/quelle-dommage/" rel="alternate"></link><published>2017-11-05T00:00:00Z</published><updated>2017-11-05T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/quelle-dommage/</id><summary type="html"><blockquote><a href="https://mirage.io/">Mirage</a> and <a href="https://ocaml.org/opam/">OPAM</a> have moved···<li><code>dommage build ...</code> runs <code>mirage build ...</code> inside the build container</li><li><code>dommage clean ...</code> runs <code>mirage clean ...</code> inside the build container</li>+</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>Spring Loading Karabiner in the Autumn</title><link href="https://mort.io/blog/mess-with-my-keyboard/" rel="alternate"></link><published>2017-10-30T00:00:00Z</published><updated>2017-10-30T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/mess-with-my-keyboard/</id><summary type="html"><p>I recently took the plunge and upgraded my OS X. Not to vN of <em>Sierra</em> as I’d<p>Unfortunately, this toasted<sup class="footnote-reference"><a href="https://mort.io/blog/mess-with-my-keyboard/#1">1</a></sup> my carefully curated keyboard remappings as<a href="https://pqrs.org/osx/karabiner/">Karabiner</a> used a kernel extension, for which everything changed. All was not···</span></span></span><span class="z-source z-json"><span class="z-meta z-mapping z-value z-json"><span class="z-meta z-sequence z-json"> <span class="z-punctuation z-section z-sequence z-end z-json">]</span></span></span></span><span class="z-source z-json"><span class="z-meta z-mapping z-value z-json"> <span class="z-punctuation z-section z-mapping z-end z-json">}</span></span>+<p>…and that’s it. My keyboard is, once again, my castle.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>A bug-fix 12 years in the making</title><link href="https://www.dra27.uk/blog/platform/2017/10/30/ocaml-unicode.html" rel="alternate"></link><published>2017-10-30T00:00:00Z</published><updated>2017-10-30T00:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2017/10/30/ocaml-unicode</id><summary type="html"><h1 id="windows-unicode-support-in-ocaml-4060">Windows Unicode Support in OCaml 4.06.0</h1><p>In August 2005, <a href="https://caml.inria.fr/mantis/view.php?id=3771">Mantis Report #3771</a> was opened against OCaml 3.08.4 reporting that Windows applications could not read filenames containing Unicode characters. Various patches have been proposed over the last twelve years leading to <a href="https://github.com/ocaml/ocaml/pull/153">GitHub Pull Request #153</a> almost exactly 2 years ago. This last spring, Clément Franchini at <a href="http://www.altair.com">Altair</a> rebased the patch and added tests. Finally, Nicolás Ojeda Bär at <a href="https://www.lexifi.com">LexiFi</a> took on the challenge of completing the patch and minimising the diff with a view to merging in OCaml 4.06.0.</p>···<p>If your application must behave in the old way, for example if you’re concerned that you may have some filenames which do look like valid UTF-8 but should not be interpreted as such (for example, stored in a database or other data files) or if receiving UTF-8 encoded filenames back from the runtime is a problem, then it’s possible to force the runtime to disable the UTF-8 handling by setting <code class="language-plaintext highlighter-rouge">WINDOWS_UNICODE=0</code> in <code class="language-plaintext highlighter-rouge">config/Makefile</code> (i.e. you need to build an entirely separately OCaml). In this mode, internally the runtime continues to use the “Wide” versions of the Windows system calls, but instead of translating strings to and from UTF-8, the runtime uses the current locale, which was the previous behaviour.</p>+<p>C bindings on Windows which handle filenames will not break per se, but you may end up passing a UTF-8 encoded string to a Windows ANSI function which doesn’t recognise them. However, it is possible to access the functions the runtime is using to convert strings. In C, we’ve defined a new type <code class="language-plaintext highlighter-rouge">char_os</code> which is a normal <code class="language-plaintext highlighter-rouge">char</code> on Unix but a 16-bit <code class="language-plaintext highlighter-rouge">wchar_t</code> on Windows. There are functions provided for converting a UTF-8 string to and from a <code class="language-plaintext highlighter-rouge">char_os</code> string (<code class="language-plaintext highlighter-rouge">caml_stat_strdup_to_os</code> and <code class="language-plaintext highlighter-rouge">caml_stat_strdup_of_os</code>) and also an optimised function for converting a <code class="language-plaintext highlighter-rouge">char_os</code> string to an OCaml UTF-8 encoded string <code class="language-plaintext highlighter-rouge">caml_copy_string_of_os</code>. More details on this experimental API are available in the <a href="http://polychoron.fr/ocaml-beta-manual/4.06+rc1/intfc.html#sec473">manual</a>.</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>Setting up OCaml’s GitHub CI for user forks</title><link href="https://www.dra27.uk/blog/platform/2017/09/27/ocaml-github-ci.html" rel="alternate"></link><published>2017-09-27T01:00:00Z</published><updated>2017-09-27T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2017/09/27/ocaml-github-ci</id><summary type="html"><p>There are various Continuous Integration (CI) systems monitoring OCaml. The most publicly visible of these are the two which run on our GitHub repository: <a href="https://travis-ci.org/ocaml/ocaml/branches">Travis</a>, which tests GNU/Linux in 32-bit and 64-bit configurations and also performs a few sanity checks on pull requests, and <a href="https://ci.appveyor.com/project/avsm/ocaml/history">AppVeyor</a> which tests some of the native Windows ports.</p><p>OCaml 4.06 was branched on 18 September. One of the problems that we face during the weeks between branching and a release of OCaml is that the increased activity creates huge pressure on our CI systems. This is particularly noticeable on AppVeyor, since the build takes 40–50 minutes and we can only have 1 build running at a time across all pull requests and branches. Travis builds actually take around the same amount of overall time, but they are more parallelised, taking 20–25 minutes to complete.</p>···<p>Of course, nothing prevents you from making Pull Requests against your own OCaml fork before making your final pull request to the main repository. This way, you get the usual familiar monitoring in the GitHub pull request page:</p>+<p><img alt="Local GitHub PR" src="https://www.dra27.uk/assets/2017-09-27/2017-09-27-ocaml-github-ci-7.png" /></p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>State of the OCaml Platform</title><link href="https://anil.recoil.org/news/2f824dde-e112-4f4f-890d-1825572ea1c4-1" rel="alternate"></link><published>2017-09-08T01:00:00Z</published><updated>2017-09-08T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2f824dde-e112-4f4f-890d-1825572ea1c4-1</id><summary type="html"><p>Talk on the state of the OCaml Platform</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Windows Console Performance (or lack thereof)</title><link href="https://www.dra27.uk/blog/platform/2017/09/06/windows-console-fun.html" rel="alternate"></link><published>2017-09-06T01:00:00Z</published><updated>2017-09-06T01:00:00Z</updated><author><name>DavidA</name></author><id>https://www.dra27.uk/blog/platform/2017/09/06/windows-console-fun</id><summary type="html"><p>I spent a few days at the weekend refreshing my native Windows fork of Opam and while doing so, found an interesting performance issue for console applications on Windows.</p><p>One of the jobs porting both Opam and opam-repository for native Windows is updating all the OCaml compiler packages themselves to have Windows build commands. It’s quite extensive, since the instructions have varied across versions and there are also a lot of <a href="https://github.com/metastack/ocaml-legacy">patches</a> which need to be applied, so this is done using an <code class="language-plaintext highlighter-rouge">opam-admin.top</code> script. This little helper program in the Opam developer tools includes a useful function <code class="language-plaintext highlighter-rouge">Opam_admin_top.iter_packages</code> which passes every package definition in a repository along with its <code class="language-plaintext highlighter-rouge">opam</code> file to a function you provide and writes any changes to that opam back to the repository.</p>···<p>So opam-admin.top now has some rate limiting code for the status messages - the script now only takes half a minute to run, and the output even looks nicer. Moral of the story is clear: never write more to the console than you have to.</p>+<p>This needs a little further investigation - it’ll be interesting to see if the Windows 10 console host offers any improvements and it would be good to have comparison numbers for a Linux distro.</p></summary><category term="Notes from the Windows corner"></category></entry><entry><title>The State of the OCaml Platform: Sep 2017</title><link href="https://anil.recoil.org/news/2017-oud-platform-1" rel="alternate"></link><published>2017-09-01T01:00:00Z</published><updated>2017-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2017-oud-platform-1</id><summary type="html"><p>Annual update on the OCaml Pltform at ICFP</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-oud-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Effectively tackling the awkward squad</title><link href="https://anil.recoil.org/news/2017-ml-effects-1" rel="alternate"></link><published>2017-09-01T01:00:00Z</published><updated>2017-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2017-ml-effects-1</id><summary type="html"><p>Paper on how to tackle awkward IO patterns with effect handlers</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-ml-effects.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Platforms, Packaging, Progress— Addendum</title><link href="https://mort.io/blog/topkg-addendum/" rel="alternate"></link><published>2017-09-01T01:00:00Z</published><updated>2017-09-01T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/topkg-addendum/</id><summary type="html"><p>This is a short addendum to my <a href="http://mort.io/blog/2017/08/28/past-present-future/">post of a couple of dayscarelessness in writing the <a href="https://github.com/mor1/ocal/blob/13a9a7f5b8f2e0be4c2b55941a00a885df202cf8/ocal.opam#L16-L22">OPAM···+be…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Platforms, Packaging, Progress</title><link href="https://mort.io/blog/past-present-future/" rel="alternate"></link><published>2017-08-28T01:00:00Z</published><updated>2017-08-28T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/past-present-future/</id><summary type="html"><p>I recently decided to refresh and update my <a href="https://github.com/mor1/ocal/">ocal</a> package,<sup class="footnote-reference"><a href="https://mort.io/blog/past-present-future/#1">1</a></sup> primarily toport it to use the excellent <a href="https://github.com/pqwy/notty/">notty</a> before adding support for indicating···eyes) metadata, autogeneration of more of the repeated metadata (<code>.merlin</code> etc),and a reasonably simple <a href="https://github.com/mor1/ocal/blob/0.2.0/Makefile"><code>Makefile</code></a> that I actually think I understand.+Definitely progress :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>ARMing LinuxKit</title><link href="https://mort.io/blog/arming-linuxkit/" rel="alternate"></link><published>2017-06-02T01:00:00Z</published><updated>2017-06-02T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/arming-linuxkit/</id><summary type="html"><p>As some may know, following the <a href="https://unikernels.com">Unikernel Systems</a> acquisition, Icurrently do contract work for <a href="https://docker.com">Docker Inc.</a> in addition to my day jobhere at the <a href="https://www.cl.cam.ac.uk">Cambridge University Computer Laboratory</a>. Recently this hascentred on <a href="https://github.com/linuxkit/linuxkit">LinuxKit</a>, “<em>A toolkit for building secure, portable and lean···like to provide patches to, e.g., support network devices on <a href="https://packet.net">packet.net</a>,please <a href="mailto:mort@cantab.net">get in touch</a>, file an issue or send a pull+request!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Opening discuss.ocaml.org for the community</title><link href="https://anil.recoil.org/notes/opening-discuss-ocaml" rel="alternate"></link><published>2017-05-13T01:00:00Z</published><updated>2017-05-13T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/opening-discuss-ocaml</id><summary type="html"><p>I opened up a <a href="https://discourse.org">Discourse</a> forum for the OCaml community to use, which is running successfully on https://discuss.ocaml.org. This forum thread collates the feedback and discussions about it.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Docker Docker</title><link href="https://mort.io/blog/docker-docker/" rel="alternate"></link><published>2017-05-06T01:00:00Z</published><updated>2017-05-06T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/docker-docker/</id><summary type="html"><h1 id="bootstrapping-docker-for-arm64-aka-aarch64"><a class="zola-anchor" href="https://mort.io/blog/docker-docker/#bootstrapping-docker-for-arm64-aka-aarch64">Bootstrapping Docker for ARM64 (aka AARCH64)</a></h1><li>bootstrap ARM64 <code>go</code> toolchain on x86, and install</li>···<li><code>DOCKER_BUILDTAGS</code> environment variable no longer supported?</li><li><code>1.12.3</code> and <code>1.13.1</code> also built</li>+</ul></summary><category term="mort’s mythopœia"></category></entry><entry><title>DaLi: Database as a Library</title><link href="https://anil.recoil.org/news/2017-snapl-dali-1" rel="alternate"></link><published>2017-05-01T01:00:00Z</published><updated>2017-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2017-snapl-dali-1</id><summary type="html"><p>Position paper on building databases-as-a-library at SNAPL 2017</p>···&nbsp; <a href="https://anil.recoil.org/papers/2017-snapl-dali.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Lab GitLab</title><link href="https://mort.io/blog/lab-gitlab/" rel="alternate"></link><published>2017-04-19T01:00:00Z</published><updated>2017-04-19T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/lab-gitlab/</id><summary type="html"><p>Recently had cause to do this as part of the <a href="https://www.cl.cam.ac.uk/research/srg/">SRG’s</a> and <a href="https://ocamllabs.io/">OCaml Labs</a>Assuming your local <code>sys-admin</code> has kindly created you a suitable VM running···<a href="http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending">http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending</a>.</p><pre class="language-ruby z-code"><code class="language-ruby"><span class="z-source z-ruby"><span class="z-support z-class z-ruby">Notify</span><span class="z-punctuation z-accessor z-dot z-ruby">.</span>test_email<span class="z-punctuation z-definition z-group z-begin z-ruby">(</span><span class="z-meta z-string z-ruby"><span class="z-string z-quoted z-single z-ruby"><span class="z-punctuation z-definition z-string z-begin z-ruby">'</span>your@email.address, <span class="z-punctuation z-definition z-string z-end z-ruby">'</span></span></span><span class="z-variable z-other z-constant z-ruby">Hello</span> <span class="z-variable z-other z-constant z-ruby">World</span><span class="z-meta z-string z-ruby"><span class="z-string z-quoted z-single z-ruby"><span class="z-punctuation z-definition z-string z-begin z-ruby">'</span>, <span class="z-punctuation z-definition z-string z-end z-ruby">'</span></span></span><span class="z-variable z-other z-constant z-ruby">This</span> is a <span class="z-support z-function z-builtin z-ruby">test</span> message<span class="z-meta z-string z-ruby"><span class="z-string z-quoted z-single z-ruby"><span class="z-punctuation z-definition z-string z-begin z-ruby">'</span>).deliver_now+</span></span></span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Google screening</title><link href="https://mort.io/blog/google-screening/" rel="alternate"></link><published>2017-01-29T00:00:00Z</published><updated>2017-01-29T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/google-screening/</id><summary type="html"><p>Some time ago, for reasons best known to themselves, a Google recruiter decidedto “reach out” on the basis of <a href="https://github.com/mor1/">my GitHub profile</a> to···+<p>I said No. They haven’t called back since. Oh well…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Customising Homebrew service</title><link href="https://mort.io/blog/brew-plist/" rel="alternate"></link><published>2017-01-04T00:00:00Z</published><updated>2017-01-04T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/brew-plist/</id><summary type="html"><p>As I could never remember the command to start the <code>offlineimap</code> service using<pre class="language-bash z-code"><code class="language-bash"><span class="z-source z-shell z-bash"><span class="z-meta z-function-call z-shell"><span class="z-variable z-function z-shell">brew</span></span><span class="z-meta z-function-call z-arguments z-shell"> services start offlineimap <span class="z-meta z-group z-expansion z-tilde"><span class="z-variable z-language z-tilde z-shell">~</span></span>/rc-files/homebrew.mxcl.offlineimap.plist</span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Building Up Your ARMs</title><link href="https://mort.io/blog/building-up-your-arms/" rel="alternate"></link><published>2016-11-16T00:00:00Z</published><updated>2016-11-16T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/building-up-your-arms/</id><summary type="html"><p>Due to the impending finish of the EU FP7 funded <a href="https://usercentricnetworking.eu">User CentricNetworking</a><sup class="footnote-reference"><a href="https://mort.io/blog/building-up-your-arms/#1">1</a></sup> I recently had cause to revisit the excellent work that···+</div></summary><category term="mort’s mythopœia"></category></entry><entry><title>Debugging with jQuery</title><link href="https://mort.io/blog/jquery-console/" rel="alternate"></link><published>2016-11-16T00:00:00Z</published><updated>2016-11-16T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/jquery-console/</id><summary type="html"><p>I had cause to do this recently, so here’re the runes from<a href="http://stackoverflow.com/questions/7474354/include-jquery-in-the-javascript-console">http://stackoverflow.com/questions/7474354/include-jquery-in-the-javascript-console</a><pre class="language-javascript z-code"><code class="language-javascript"><span class="z-source z-ts"><span class="z-meta z-var z-expr z-ts"><span class="z-storage z-type z-ts">var</span> <span class="z-meta z-var-single-variable z-expr z-ts"><span class="z-meta z-definition z-variable z-ts"><span class="z-variable z-other z-readwrite z-ts">script</span></span> </span><span class="z-keyword z-operator z-assignment z-ts">=</span> <span class="z-meta z-function-call z-ts"><span class="z-support z-variable z-dom z-ts">document</span><span class="z-punctuation z-accessor z-ts">.</span><span class="z-support z-function z-dom z-ts">createElement</span></span><span class="z-meta z-brace z-round z-ts">(</span><span class="z-string z-quoted z-single z-ts"><span class="z-punctuation z-definition z-string z-begin z-ts">'</span>script<span class="z-punctuation z-definition z-string z-end z-ts">'</span></span><span class="z-meta z-brace z-round z-ts">)</span></span><span class="z-punctuation z-terminator z-statement z-ts">;</span></span><span class="z-source z-ts"><span class="z-variable z-other z-object z-ts">script</span><span class="z-punctuation z-accessor z-ts">.</span><span class="z-variable z-other z-property z-ts">src</span> <span class="z-keyword z-operator z-assignment z-ts">=</span> <span class="z-string z-quoted z-double z-ts"><span class="z-punctuation z-definition z-string z-begin z-ts">&quot;</span>https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js<span class="z-punctuation z-definition z-string z-end z-ts">&quot;</span></span><span class="z-punctuation z-terminator z-statement z-ts">;</span></span><span class="z-source z-ts"><span class="z-meta z-function-call z-ts"><span class="z-support z-variable z-dom z-ts">document</span><span class="z-punctuation z-accessor z-ts">.</span><span class="z-support z-function z-dom z-ts">getElementsByTagName</span></span><span class="z-meta z-brace z-round z-ts">(</span><span class="z-string z-quoted z-single z-ts"><span class="z-punctuation z-definition z-string z-begin z-ts">'</span>head<span class="z-punctuation z-definition z-string z-end z-ts">'</span></span><span class="z-meta z-brace z-round z-ts">)</span><span class="z-meta z-array z-literal z-ts"><span class="z-meta z-brace z-square z-ts">[</span><span class="z-constant z-numeric z-decimal z-ts">0</span><span class="z-meta z-brace z-square z-ts">]</span></span><span class="z-meta z-function-call z-ts"><span class="z-punctuation z-accessor z-ts">.</span><span class="z-support z-function z-dom z-ts">appendChild</span></span><span class="z-meta z-brace z-round z-ts">(</span><span class="z-variable z-other z-readwrite z-ts">script</span><span class="z-meta z-brace z-round z-ts">)</span><span class="z-punctuation z-terminator z-statement z-ts">;</span>+</span></code></pre></summary><category term="mort’s mythopœia"></category></entry><entry><title>Zen and the Art of Research Management</title><link href="https://mort.io/blog/zen-and-the-art-of-research-management/" rel="alternate"></link><published>2016-11-11T00:00:00Z</published><updated>2016-11-11T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/zen-and-the-art-of-research-management/</id><summary type="html"><p>I think this is a bit of a classic, the first written form of which I cameacross in <a href="https://www.cl.cam.ac.uk/misc/obituaries/needham/">Prof. Roger Needham</a>’s <a href="https://www.cl.cam.ac.uk/events/50+5/">50+5 Festschrift</a> celebrating histime at the <a href="https://www.cl.cam.ac.uk/">Cambridge University Computer Lab</a> and<a href="https://www.microsoft.com/en-us/research/lab/microsoft-research-cambridge/">Microsoft Research Cambridge</a>. I don’t know who originated it, but the···+</ol></summary><category term="mort’s mythopœia"></category></entry><entry><title>Evolving the Unikernel Revolution</title><link href="https://mort.io/blog/unikernel-revolution/" rel="alternate"></link><published>2016-11-10T00:00:00Z</published><updated>2016-11-10T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/unikernel-revolution/</id><summary type="html"><p>I’ve had the pleasure of giving a couple of talks at some fun venues recently,extolling both the virtues of <a href="http://unikernel.org/">unikernels</a> and talking a bit about where we<p>Specifically, <a href="https://operability.io/">Operability.io 2016</a> a couple of weeks ago was enlightening···+on <a href="https://twitter.com/mort___">Twitter</a>!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Rat Racing Jetlag</title><link href="https://mort.io/blog/jetlag-fasting/" rel="alternate"></link><published>2016-11-04T00:00:00Z</published><updated>2016-11-04T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/jetlag-fasting/</id><summary type="html"><p>As I’ve found myself repeating the same information several times recently, and···as far as I know and have experienced, fasting means <strong>no</strong> calories,+<strong>including alcohol</strong>, even it it’s free… :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Unikernels: the rise of the library hypervisor in MirageOS</title><link href="https://anil.recoil.org/news/725dda70-b12b-4b1a-a8ae-fa9c22683ff2-1" rel="alternate"></link><published>2016-10-14T01:00:00Z</published><updated>2016-10-14T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/725dda70-b12b-4b1a-a8ae-fa9c22683ff2-1</id><summary type="html"><p>DockerCon talk on unikernels and MirageOS</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Grubbing Around</title><link href="https://mort.io/blog/grubbing-around/" rel="alternate"></link><published>2016-09-13T01:00:00Z</published><updated>2016-09-13T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/grubbing-around/</id><summary type="html"><p>Nothing earth-shattering here: I recently had the “pleasure” of setting up an···+{% endhighlight %}</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>MirageOS Summer 2016 hack retreat</title><link href="https://mirage.io/blog/2016-summer-hackathon" rel="alternate"></link><published>2016-06-29T01:00:00Z</published><updated>2016-06-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/mirageos-hack-retreat-2016</id><summary type="html"></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The functional innards of Docker for Mac and Windows</title><link href="https://anil.recoil.org/news/dbd7546a-95d8-40af-b286-3cf930767682-1" rel="alternate"></link><published>2016-06-24T01:00:00Z</published><updated>2016-06-24T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/dbd7546a-95d8-40af-b286-3cf930767682-1</id><summary type="html"><p>I gave a talk at the <a href="https://functional.works-hub.com">Functional Works</a> meetup, held in <a href="https://janestreet.com">Jane Street London</a> about how Docker for Mac and Windows use OCaml and unikernels <a href="https://www.docker.com/blog/docker-unikernels-open-source/">under the hood</a>.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ian Eyberg, Joshua Bernstein, Anil Madhavapeddy at OSCON in Austin</title><link href="https://anil.recoil.org/news/8c92d6cf-3e05-429f-8c8e-094f77be61c6-1" rel="alternate"></link><published>2016-06-06T01:00:00Z</published><updated>2016-06-06T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/8c92d6cf-3e05-429f-8c8e-094f77be61c6-1</id><summary type="html"><p>Interviewed by The New Stack at OSCON in Austin, Texas</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>FLICK: Developing and Running Application-Specific Network Services</title><link href="https://anil.recoil.org/news/2016-usenix-flick-1" rel="alternate"></link><published>2016-06-01T01:00:00Z</published><updated>2016-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2016-usenix-flick-1</id><summary type="html"><p>Paper on application-specific network services at USENIX ATC 2016</p>···&nbsp; <a href="https://anil.recoil.org/papers/2016-usenix-flick.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Improving Docker with Unikernels</title><link href="https://anil.recoil.org/notes/vpnkit-hyperkit" rel="alternate"></link><published>2016-05-18T01:00:00Z</published><updated>2016-05-18T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/vpnkit-hyperkit</id><summary type="html"><p>I announce the release of three big components that form the basis for <a href="https://docker.com">Docker for Desktop</a>: a hypervisor framework called HyperKit, a networking framework for host translation called VPNKit, and a versioned data management store called DataKit.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Local Knowledge</title><link href="https://mort.io/blog/local-knowledge/" rel="alternate"></link><published>2016-03-11T00:00:00Z</published><updated>2016-03-11T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/local-knowledge/</id><summary type="html"><p>A relatively long hiatus this time – blame the Cambridge housing market and theAlso obtaining a <a href="http://www.christs.cam.ac.uk/content/dr-richard-mortier">College···+warnings.)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Declarative Foreign Function Binding Through Generic Programming</title><link href="https://anil.recoil.org/news/2016-flops-cmeleon-1" rel="alternate"></link><published>2016-02-01T00:00:00Z</published><updated>2016-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2016-flops-cmeleon-1</id><summary type="html"><p>Paper on declarative approaches to foreign function bindings at FLOPS 2016</p>···&nbsp; <a href="https://anil.recoil.org/papers/2016-flops-cmeleon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernel Systems is now part of Docker</title><link href="https://anil.recoil.org/news/a612e810-d56c-48af-b43e-2893a96b9120-1" rel="alternate"></link><published>2016-01-21T00:00:00Z</published><updated>2016-01-21T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/a612e810-d56c-48af-b43e-2893a96b9120-1</id><summary type="html"><p>Announced that Unikernel Systems is now part of Docker</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernel Systems acquired by Docker</title><link href="https://anil.recoil.org/notes/docker-buys-unikernel-systems" rel="alternate"></link><published>2016-01-21T00:00:00Z</published><updated>2016-01-21T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/docker-buys-unikernel-systems</id><summary type="html"><p>My startup <a href="https://anil.recoil.org/projects/unikernels">Unikernel Systems</a> was acquired by <a href="https://anil.recoil.org/docker.com">Docker</a>, and I'll<p>'Just like we did with containers, we are interested is democratizing that technology, making it available and useful to the millions of developers and IT pros out there, said <a href="https://www.linkedin.com/in/solomonhykes">Solomon Hykes</a>, founder and chief technology officer for Docker. 'Unikernels allow you to basically get rid of the operating system, and instead compile into the application the small bits of the operating system it really needs.'<cite>-- <a href="https://thenewstack.io/docker-buys-unikernel-systems-plans-bring-unikernels-data-center/">The New Stack</a></cite></p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Of Mice and Keyboards</title><link href="https://mort.io/blog/elcapitan-maps/" rel="alternate"></link><published>2015-11-21T00:00:00Z</published><updated>2015-11-21T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/elcapitan-maps/</id><summary type="html"><p>A bit of a delay since the last post – lots going on! But anyway: I···terminals, one of those <em>Really Hard</em> things for computers/manufacturers to<p><em>Note: Thanks to <a href="http://www.amp-what.com/unicode/search/">http://www.amp-what.com/unicode/search/</a> for an easy way to+hunt down some of the unicode symbols used above!</em></p></summary><category term="mort’s mythopœia"></category></entry><entry><title>SibylFS: formal specification and oracle-based testing for POSIX and real-world file systems</title><link href="https://anil.recoil.org/news/2015-sosp-sibylfs-1" rel="alternate"></link><published>2015-10-01T01:00:00Z</published><updated>2015-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2015-sosp-sibylfs-1</id><summary type="html"><p>Paper on formal specificaiton and testing of filesystems at SOSP 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-sosp-sibylfs.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Personal Data: Thinking Inside the Box</title><link href="https://anil.recoil.org/news/2015-aarhus-databox-1" rel="alternate"></link><published>2015-10-01T01:00:00Z</published><updated>2015-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2015-aarhus-databox-1</id><summary type="html"><p>Paper on personal databoxes at the one-in-a-decade Aarhus conference</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-aarhus-databox.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Immutable Distributed Infrastructure with Unikernels</title><link href="https://anil.recoil.org/news/d5fbd6a4-bef2-4fbc-9d02-cb9935e50d8e-1" rel="alternate"></link><published>2015-09-29T01:00:00Z</published><updated>2015-09-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/d5fbd6a4-bef2-4fbc-9d02-cb9935e50d8e-1</id><summary type="html"><p>Invited talk at NetPL on Immutable Distributed Infrastructure with Unikernels</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The State of the OCaml Platform</title><link href="https://anil.recoil.org/news/35e1a70d-0fb4-49b1-86ce-dd6266b812de-1" rel="alternate"></link><published>2015-09-04T01:00:00Z</published><updated>2015-09-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/35e1a70d-0fb4-49b1-86ce-dd6266b812de-1</id><summary type="html"><p>Update on the state of the OCaml Platform</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Not-Quite-So-Broken TLS</title><link href="https://anil.recoil.org/news/2015-usenixsec-nqsb-1" rel="alternate"></link><published>2015-08-01T01:00:00Z</published><updated>2015-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2015-usenixsec-nqsb-1</id><summary type="html"><p>Paper on rebuilding TLS securely but practically at USENIX Security 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-usenixsec-nqsb.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Fame and Fortune!</title><link href="https://mort.io/blog/bigtechday-mirage/" rel="alternate"></link><published>2015-06-24T01:00:00Z</published><updated>2015-06-24T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/bigtechday-mirage/</id><summary type="html"><p>After a slew of HDI related items, a quick <a href="http://openmirage.org/">MirageOS</a> note. I was invited togive a presentation on MirageOS at the <a href="https://www.tngtech.com/en.html">TNG</a><a href="https://www.tngtech.com/en/big-techday.html">Big TechDay 8</a> conference. This···<a href="http://www.techcast.com/events/bigtechday8/salvator-1130/?q=salvator-1130">available</a>.</p>+<p>As ever, comments welcome!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Actual HCI Papers!</title><link href="https://mort.io/blog/ecscw-and-aarhus/" rel="alternate"></link><published>2015-06-17T01:00:00Z</published><updated>2015-06-17T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/ecscw-and-aarhus/</id><summary type="html"><p>I have to confess to being quite pleased to having a couple of<a href="http://hdiresearch.org/">HDI</a>-related papers accepted recently (even if we<a href="http://ssrn.com/abstract=2508051">original HDI paper</a> – recently judged···lives. Building a Databox, using <a href="https://mirage.io/">MirageOS</a>, is hopefully+going to be a key activity for me in the coming months…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Rescuing a Shattered Nexus 4</title><link href="https://mort.io/blog/nexus-4-rescue/" rel="alternate"></link><published>2015-05-21T01:00:00Z</published><updated>2015-05-21T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/nexus-4-rescue/</id><summary type="html"><p>A little while ago, before I’d done the smart thing and got myself a case for my···+otherwise), possibly while sobbing quietly.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Moving Onto Mirage</title><link href="https://mort.io/blog/moving-onto-mirage/" rel="alternate"></link><published>2015-05-20T01:00:00Z</published><updated>2015-05-20T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/moving-onto-mirage/</id><summary type="html"><p>For a little while I’ve had <a href="http://github.com/mor1/mor1.github.io">this site</a> running as a <a href="http://openmirage.org/">MirageOS</a>unikernel, shadowing the main site hosted on <a href="http://github.com/">GitHub</a>. I’ve finally decided to···<code>gcc</code> and <code>binutils</code> to ensure the stubs for a couple of packages (notably+<p>Next stop: adding TLS and DNS support…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Unikernels: Functional Infrastructure with Mirage OS</title><link href="https://anil.recoil.org/news/55852136-843d-4043-98e7-6b46c6d39b01-1" rel="alternate"></link><published>2015-05-12T01:00:00Z</published><updated>2015-05-12T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/55852136-843d-4043-98e7-6b46c6d39b01-1</id><summary type="html"><p>Talk at Esper on functional programming with unikernels</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Jitsu: Just-In-Time Summoning of Unikernels</title><link href="https://anil.recoil.org/news/ad4658f5-ca4f-42f3-b61a-58f13dcdeb1a-1" rel="alternate"></link><published>2015-05-04T01:00:00Z</published><updated>2015-05-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/ad4658f5-ca4f-42f3-b61a-58f13dcdeb1a-1</id><summary type="html"><p>NSDI 2015 talk on Jitsu</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Kadupul: Livin' on the Edge with Virtual Currencies and Time-Locked Puzzles</title><link href="https://anil.recoil.org/news/2015-diynet-kadupul-1" rel="alternate"></link><published>2015-05-01T01:00:00Z</published><updated>2015-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2015-diynet-kadupul-1</id><summary type="html"><p>Workshop paper on DIY networking using timelock puzzles</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-diynet-kadupul.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Jitsu: Just-In-Time Summoning of Unikernels</title><link href="https://anil.recoil.org/news/2015-nsdi-jitsu-1" rel="alternate"></link><published>2015-05-01T01:00:00Z</published><updated>2015-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2015-nsdi-jitsu-1</id><summary type="html"><p>Paper on spinning up low-latency unikernels per-connection at NSDI 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-nsdi-jitsu.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Diamonds are a Chap's Best Friend</title><link href="https://mort.io/blog/inconstant-ruby/" rel="alternate"></link><published>2015-04-09T01:00:00Z</published><updated>2015-04-09T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/inconstant-ruby/</id><summary type="html"><p>As <a href="https://mort.io/blog/2015/01/15/begin-again/">noted previously</a>, this site is basically a<a href="https://github.com/">Github</a>-hosted <a href="http://jekyllrb.com/">Jekyll</a> site at present, though one that can be built as a<a href="http://openmirage.org/">Mirage</a> unikernel. Part of the <a href="http://openmirage.org/">Mirage</a> workflow to publish a new postinvolves using <a href="https://travis-ci.org/">Travis CI</a> to build and then commit back a new unikernel···<p>And that’s all there is to it – you should now be able to call <code>jekyll</code> in your+<a href="https://travis-ci.org/">Travis</a> environment as you’d expect…</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Taking it to the People People</title><link href="https://mort.io/blog/hdi-seminar/" rel="alternate"></link><published>2015-04-08T01:00:00Z</published><updated>2015-04-08T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/hdi-seminar/</id><summary type="html"><p>Looks like I get a chance to run my mouth off again :) Upcoming<a href="http://hdiresearch.org/">HDI</a> <a href="http://www.crassh.cam.ac.uk/events/26198">research···+</blockquote></summary><category term="mort’s mythopœia"></category></entry><entry><title>Reviewing the second year of OCaml Labs in 2014</title><link href="https://anil.recoil.org/notes/ocamllabs-2014-review" rel="alternate"></link><published>2015-04-02T01:00:00Z</published><updated>2015-04-02T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ocamllabs-2014-review</id><summary type="html"><p>The <a href="https://anil.recoil.org/projects/ocamllabs">OCaml Labs</a> initiative within the <a href="http://www.cl.cam.ac.uk">Cambridgeupdate at the <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/news/index.html#Dec%202013">end of···+with any queries, concerns or bars of chocolate as encouragement.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I Think Someone Else Is Also Following Me...</title><link href="https://mort.io/blog/being-followed-postscript/" rel="alternate"></link><published>2015-03-16T00:00:00Z</published><updated>2015-03-16T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/being-followed-postscript/</id><summary type="html"><p>Turns out others were listening too – notably the USA’s <a href="http://www.darpa.mil/">DARPA</a>. The recentannouncement of the <a href="http://www.darpa.mil/NewsEvents/Releases/2015/03/11.aspx">Brandeis</a> programme makes explicit reference to <a href="http://ssrn.com/abstract=2508051">HDI</a>and <a href="http://hdiresearch.org/">our website</a>. This has been picked up by <a href="http://gcn.com/articles/2015/03/12/darpa-brandeis.aspx">GCN</a>, <a href="http://www.usatoday.com/story/nation/2015/03/16/data-privacy-darpa-brandeis/70222556/">USAToday</a>,<a href="http://www.nbcnews.com/tech/security/darpa-unexpectedly-announces-program-improve-online-piracy-n322601">NBCNews</a>, <a href="http://www.engadget.com/2015/03/12/darpa-is-trying-to-reinvent-online-privacy/">Engadget</a> among others. With $60M potentially on the table, I+:)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>I Think Someone's Following Me...</title><link href="https://mort.io/blog/someones-following-me/" rel="alternate"></link><published>2015-03-02T00:00:00Z</published><updated>2015-03-02T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/someones-following-me/</id><summary type="html"><p>It’s always<sup class="footnote-reference"><a href="https://mort.io/blog/someones-following-me/#1">1</a></sup> nice when someone notices what you’re doing, and I waspleasantly surprised recently to find that someone had indeed been watching.<sup class="footnote-reference"><a href="https://mort.io/blog/someones-following-me/#2">2</a></sup></p><div class="footnote-definition" id="1"><sup class="footnote-definition-label">1</sup>···<a href="http://www.theguardian.com/profile/johnnaughton">John Naughton</a> in the <a href="http://www.theguardian.com/technology/2015/feb/01/control-personal-data-databox-end-user-agreement">Guardian</a>, which ended up with a pretty+<p>Guess we’d better get on and deliver it now then :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>ICFP 2015 - a call for sponsorship and how you can help</title><link href="https://anil.recoil.org/notes/icfp15-call-for-sponsorships" rel="alternate"></link><published>2015-02-18T00:00:00Z</published><updated>2015-02-18T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/icfp15-call-for-sponsorships</id><summary type="html"><p>The call for papers for this year’s <a href="http://icfpconference.org/icfp2015/">International Conference on Functional···<p>Platinum: $10000: As above plus: named supporter of whole event, logo on lanyards, badge ribbon, table/booth-like space available (in coffee break areas), other negotiated benefits (subject to ACM restrictions on commercial involvement).</p><p>Thank you for your time and especially for your generosity! I look forward to seeing you in Vancouver. If you are willing to be a sponsor, it would be helpful to hear back by March 9th to help us plan and budget.</p>+<p>If you are interested, please get in touch with <a href="mailto:anil@recoil.org">me</a> or any of the <a href="http://icfpconference.org/icfp2015/index.html">organizing committee</a>. If you’re interested in helping out ICFP in a non-financial capacity (for example, as a student volunteer), then there will also be plenty of opportunities to sign up later in the year.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Looping the Loop</title><link href="https://mort.io/blog/looping-the-loop/" rel="alternate"></link><published>2015-02-17T00:00:00Z</published><updated>2015-02-17T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/looping-the-loop/</id><summary type="html"><p>In a fit of blogging mania, here’s another one literally barely days after theTo whit: I recently sorted out <a href="http://mort.io/">this domain</a> and was having···is to <code>view-source</code> on the page but pass a spurious parameter to defeat thecache. So, to force the browser to fetch <a href="http://mort.io">http://mort.io</a> properly, all I had to+do was <code>view-source:mort.io?spurious=parameter</code>. And lo! All was well.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Talks, Old and New</title><link href="https://mort.io/blog/talks-old-and-new/" rel="alternate"></link><published>2015-02-14T00:00:00Z</published><updated>2015-02-14T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/talks-old-and-new/</id><summary type="html"><p>Thanks to an invitation from <a href="http://research.microsoft.com/en-us/um/people/hiballan/">Hitesh</a>, I recently got the chance to revisit myold stomping ground at <a href="http://research.microsoft.com/en-us/labs/cambridge/">Microsoft Research Cambridge</a>. Well, I say “old”···<a href="http://research.microsoft.com/apps/video/default.aspx?id=104278">Measuring and Monitoring Microsoft’s Enterprise Network</a>,+the process… :)</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Delivered keynote at BOB 2015 on MirageOS</title><link href="https://anil.recoil.org/news/0bc235e0-b154-4cbf-a84a-61240f16d60a-1" rel="alternate"></link><published>2015-01-23T00:00:00Z</published><updated>2015-01-23T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/0bc235e0-b154-4cbf-a84a-61240f16d60a-1</id><summary type="html"><p>I hopped over to Berlin to give the keynote at <a href="https://bobkonf.de/2015/en/">BOB 2015</a> keynote on functional operating systems. If you're in the region, I <em>highly</em> recommend attending BOB as a superbly organised conference with a diverse and interesting crowd of functional programmers.</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Begin, Again!</title><link href="https://mort.io/blog/begin-again/" rel="alternate"></link><published>2015-01-15T00:00:00Z</published><updated>2015-01-15T00:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/begin-again/</id><summary type="html"><p>Specifically, I’ve left <a href="http://www.horizon.ac.uk">Horizon</a> and the<a href="http://www.nottingham.ac.uk">University of Nottingham</a> to (re-)join the···might do to better support site generation like this in <a href="https://github.com/mirage/cowabloga">Cowabloga</a> so that I+can more seamlessly switch between <a href="http://jekyllrb.com/">Jekyll</a> and <a href="http://openmirage.org/">Mirage</a>.</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Raft Refloated: Do We Have Consensus?</title><link href="https://anil.recoil.org/news/2014-sigops-raft-1" rel="alternate"></link><published>2015-01-01T00:00:00Z</published><updated>2015-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2014-sigops-raft-1</id><summary type="html"><p>Paper on reproducing the raft consensus protocol</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-sigops-raft.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mergeable persistent data structures</title><link href="https://anil.recoil.org/news/2015-jfla-irmin-1" rel="alternate"></link><published>2015-01-01T00:00:00Z</published><updated>2015-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2015-jfla-irmin-1</id><summary type="html"><p>Paper on mergeable data structures using Irmin (nee Irminsule) at JFLA 2015</p>···&nbsp; <a href="https://anil.recoil.org/papers/2015-jfla-irmin.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CUFP'13 scribe's report</title><link href="https://anil.recoil.org/news/2013-cufp-scribe-1" rel="alternate"></link><published>2015-01-01T00:00:00Z</published><updated>2015-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2013-cufp-scribe-1</id><summary type="html"><p>Published the scribe's report for CUFP 2013 in JFP</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Codemesh 2014: Nymote: Git Your Own Cloud Here</title><link href="https://anil.recoil.org/news/644914a5-a40b-4ef7-bb17-cea43c95dd09-1" rel="alternate"></link><published>2014-12-17T00:00:00Z</published><updated>2014-12-17T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/644914a5-a40b-4ef7-bb17-cea43c95dd09-1</id><summary type="html"><p>Gave Codemesh 2014 talk on Nymote</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Jitsu: Just-in-Time Summoning of Unikernels (new directions in operating systems)</title><link href="https://anil.recoil.org/news/46968fa0-e5bd-4df8-98e1-3cf88d9b31e5-1" rel="alternate"></link><published>2014-11-25T00:00:00Z</published><updated>2014-11-25T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/46968fa0-e5bd-4df8-98e1-3cf88d9b31e5-1</id><summary type="html"><p>New Directions in Operating Systems talk on Jitsu</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Regional clouds: technical considerations</title><link href="https://anil.recoil.org/news/2014-regional-clouds-1" rel="alternate"></link><published>2014-11-01T00:00:00Z</published><updated>2014-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2014-regional-clouds-1</id><summary type="html"><p>Report on regional cloud computing law available</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-regional-clouds.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS 2.0: branch consistency for Xen Stub Domains</title><link href="https://anil.recoil.org/news/c9273fa0-802f-4d2b-8f0d-db383943564e-1" rel="alternate"></link><published>2014-10-17T01:00:00Z</published><updated>2014-10-17T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/c9273fa0-802f-4d2b-8f0d-db383943564e-1</id><summary type="html"><p>At the Xen Summit speaking about branch consistency for Xen Stub Domains</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml 2014: The OCaml Platform v1.0</title><link href="https://anil.recoil.org/news/4390c1d0-ed4f-4c01-9e10-dab2a3faed7a-1" rel="alternate"></link><published>2014-09-05T01:00:00Z</published><updated>2014-09-05T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/4390c1d0-ed4f-4c01-9e10-dab2a3faed7a-1</id><summary type="html"><p>Talk on the OCaml Platform reaching v1.0</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Haskell Symposium 2014 Keynote on functional OS design</title><link href="https://anil.recoil.org/news/ed84b2eb-1b93-4dc3-b746-63a4af13d4ea-1" rel="alternate"></link><published>2014-09-05T01:00:00Z</published><updated>2014-09-05T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/ed84b2eb-1b93-4dc3-b746-63a4af13d4ea-1</id><summary type="html"><p>Gave Haskell Symposium 2014 Keynote on functional OS design</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The OCaml Platform v1.0</title><link href="https://anil.recoil.org/news/2014-oud-platform-1" rel="alternate"></link><published>2014-09-01T01:00:00Z</published><updated>2014-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2014-oud-platform-1</id><summary type="html"><p>Paper on the OCaml Platform status</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-oud-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Multicore OCaml</title><link href="https://anil.recoil.org/news/2014-oud-multicore-1" rel="alternate"></link><published>2014-09-01T01:00:00Z</published><updated>2014-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2014-oud-multicore-1</id><summary type="html"><p>First paper on multicore OCaml's design at the OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-oud-multicore.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Irminsule: a branch-consistent distributed library database</title><link href="https://anil.recoil.org/news/2014-oud-irminsule-1" rel="alternate"></link><published>2014-09-01T01:00:00Z</published><updated>2014-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2014-oud-irminsule-1</id><summary type="html"><p>Paper at the OCaml Workshop on the Irmin database library</p>···&nbsp; <a href="https://anil.recoil.org/papers/2014-oud-irminsule.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Talks from OCaml Labs during ICFP 2014</title><link href="https://anil.recoil.org/notes/ocaml-labs-at-icfp-2014" rel="alternate"></link><published>2014-08-31T01:00:00Z</published><updated>2014-08-31T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ocaml-labs-at-icfp-2014</id><summary type="html"><p>It's the ever-exciting week of the <a href="https://icfpconference.org/">International Conference on···sometime after 8pm at <a href="http://www.3vaningen.se/">3vaningen</a>. Sounds like+Gothenburg soon!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>FLOSS Weekly 302: Open Mirage</title><link href="https://anil.recoil.org/news/5cdf2eef-9053-428e-b8b3-ab5ae274c129-1" rel="alternate"></link><published>2014-07-23T01:00:00Z</published><updated>2014-07-23T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/5cdf2eef-9053-428e-b8b3-ab5ae274c129-1</id><summary type="html"><p>Appeared on FLOSS Weekly 302 about Open Mirage</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS v2.0: a recap of new features</title><link href="https://anil.recoil.org/notes/announcing-mirageos-2" rel="alternate"></link><published>2014-07-22T01:00:00Z</published><updated>2014-07-22T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/announcing-mirageos-2</id><summary type="html"><p>This is a big release for us; after the first version came out earlier in the year, we added in support for ARM devices, a new storage subsystem called <a href="https://irmin.org">Irmin</a> and even a pure OCaml TLS stack.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS v1.2 released and the runup to 2.0</title><link href="https://anil.recoil.org/notes/announcing-mirageos-1-2" rel="alternate"></link><published>2014-07-08T01:00:00Z</published><updated>2014-07-08T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/announcing-mirageos-1-2</id><summary type="html"><p>I announce a point release of MirageOS 1.x, and the exciting run up to the major MirageOS 2.0 release which has lots of new features. The number of Mirage users is growing steadily!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>SE Radio Episode 204: Anil Madhavapeddy on the Mirage Cloud Operating System and the OCaml Language</title><link href="https://anil.recoil.org/news/d5411e25-7845-41e8-b3ec-ab3c33ce13c8-1" rel="alternate"></link><published>2014-05-01T01:00:00Z</published><updated>2014-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/d5411e25-7845-41e8-b3ec-ab3c33ce13c8-1</id><summary type="html"><p>Appeared on SE Radio Episode 204 about Mirage and OCaml</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Codio: build Mirage unikernels from a browser</title><link href="https://anil.recoil.org/notes/codio-now-has-opam-support" rel="alternate"></link><published>2014-03-26T00:00:00Z</published><updated>2014-03-26T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/codio-now-has-opam-support</id><summary type="html"><p>I noticed an offhand tweet from Phil Tomson about <a href="http://codio.com/">Codio</a> adding OPAM support, and naturally had to take a quick look. I was <em>really</em> impressed by the whole process, and ended up building the <a href="https://web.archive.org/web/20170914182531/http://www.openmirage.org/wiki/mirage-www">Mirage Xen website</a> unikernel directly from my web browser in less than a minute, including registration!</p><li>I signed up to Codio for free (since it’s <a href="https://web.archive.org/web/20170914182531/https://codio.com/avsm/Mirage-WWW/">a public project</a>) using GitHub oAuth (only public identity access required at first, no repository access).</li><li>Selected a <code>git</code> project and pointed it at the <a href="https://web.archive.org/web/20170914182531/https://github.com/mirage/mirage-www">mirage-www</a> repository.</li>···<p>Then have a cup of coffee while the box builds, and you have a <code>mir-www.xen</code>, all from your web browser! Codio has a number of deployment options available too, so you should be able to hook up a <a href="https://web.archive.org/web/20170914182531/http://amirchaudhry.com/from-jekyll-to-unikernel-in-fifty-lines/">Git-based workflow</a> using some combination of Travis or other CI service.</p>+<p>This is the first time I’ve ever been impressed by an online editor, and might consider moving away from my beloved vi...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Easily OPAM switching to any OCaml feature request</title><link href="https://anil.recoil.org/notes/ocaml-github-and-opam" rel="alternate"></link><published>2014-03-25T00:00:00Z</published><updated>2014-03-25T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ocaml-github-and-opam</id><summary type="html"><p>Gabriel Scherer <a href="http://gallium.inria.fr/blog/patch-review-on-github/">announced an<a href="https://github.com/ocaml/ocaml/pulls">GitHub</a> for six months. There is···corresponding pull request is closed. Just run <code>opam update</code> to retrievethe latest switch set from the upstream <a href="https://github.com/ocaml/opam-repository">OPAM package+repository</a>.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>ICFP 2014 - a call for sponsorship and how you can help</title><link href="https://anil.recoil.org/notes/icfp-call-for-sponsorships" rel="alternate"></link><published>2014-03-03T00:00:00Z</published><updated>2014-03-03T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/icfp-call-for-sponsorships</id><summary type="html"><p>The call for papers for this year’s <a href="http://icfpconference.org/icfp2014/">International Conference on Functional Programming</a> has just closed, with around a hundred cutting-edge research papers submitted on the theory, application, and experiences behind functional programming. This marks just the beginning of sorting out the program, as there are also over 10 big <a href="http://icfpconference.org/icfp2014/affiliated.html">affiliated workshops</a> that run throughout the week on topics ranging from specific languages (<a href="http://www.erlang.org/workshop/2014/">Erlang</a>, <a href="http://www.haskell.org/haskellwiki/HaskellImplementorsWorkshop">Haskell</a>, <a href="http://ocaml.org/meetings/ocaml/2014/">OCaml</a>), the broader <a href="http://cufp.org/">commercial community</a>, and even <a href="http://functional-art.org/">art and music</a>.</p><p>The ICFP conference experience can be a remarkable one for students. Some great ideas have emerged from random corridor conversations between talks with the likes of <a href="http://homepages.inf.ed.ac.uk/wadler/">Phil Wadler</a>, or from rain-soaked discussions with <a href="http://research.microsoft.com/en-us/people/simonpj/">Simon PJ</a> at <a href="http://mikkeller.dk/">Mikeller</a>, or in my case, from being convinced to <a href="https://blogs.janestreet.com/the-making-of-real-world-ocaml/">write a book</a> while in a smoky Tokyo bar.</p><p>Functional programming worldwide has been growing ever more popular in 2014 (and <a href="http://whatsapp.com/">lucrative</a>). We’re committed to growing the ICFP community, not just in numbers but also in diversity. We had a record number of sponsors in 2013, and sustaining the growth means that we need to reach ever wider to support the activities of the (not-for-profit) conference.</p><p>So as this year’s industrial relations chair, I thought I’d throw the gates open and <strong>invite any organization that wishes to support FP to get in touch with us</strong> (e-mail at <code>avsm2@cl.cam.ac.uk</code>) and sponsor us. I’ve put an abridged version of the e-mail solicitation below that describes the benefits. Sponsorship can start as low as $500 and is often tax deductible in many countries.</p>···<p><strong>Platinum:</strong> $10000: As above plus: named supporter of whole event, logo on lanyards, badge ribbon, table/booth-like space available (in coffee break areas), other negotiated benefits (subject to ACM restrictions on commercial involvement).</p><p>If you are interested, please get in touch with <a href="mailto:anil@recoil.org">me</a> or any of the <a href="http://icfpconference.org/icfp2014/index.html">organizing committee</a>.+If you’re interested in helping out ICFP in a non-financial capacity (for example as a student volunteer), then there will also be plenty of opportunity to sign up later in the year.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using Dust Clouds to Enhance Anonymous Communication</title><link href="https://anil.recoil.org/news/2010-iswp-dustclouds-1" rel="alternate"></link><published>2014-03-01T00:00:00Z</published><updated>2014-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2010-iswp-dustclouds-1</id><summary type="html"><p>Paper on building dust clouds for anonymous communication</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-iswp-dustclouds.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels, and the Rise of the Virtual Library Operating System</title><link href="https://anil.recoil.org/notes/unikernels-in-cacm" rel="alternate"></link><published>2014-01-13T00:00:00Z</published><updated>2014-01-13T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/unikernels-in-cacm</id><summary type="html"><p>The Communications of the ACM have just published an article that <a class="contact" href="https://github.com/djs55">Dave Scott</a> and I wrote providing a broader background on the concept of <a href="http://anil.recoil.org/papers/2013-asplos-mirage.pdf">Unikernels</a> that we’ve been working on since about 2003, when we started building <a href="http://anil.recoil.org/papers/2007-eurosys-melange.pdf">Melange</a> and the <a href="http://anil.recoil.org/papers/2010-icfp-xen.pdf">Xen toolstack</a>. You can read either the <a href="http://cacm.acm.org/magazines/2014/1/170866-unikernels">print article</a> (requires an ACM subscription) or the <a href="http://queue.acm.org/detail.cfm?id=2566628">open access version</a> on the ACM Queue.</p><p><figure class="image-right"><img alt="" class="content-image" src="https://anil.recoil.org/images/acm-queue-unikernels-ss.webp" title="" /><figcaption></figcaption></figure>···<li>Ensemble (website now offline but here’s a <a href="http://www.cs.uni-potsdam.de/ti/kreitz/PDF/99sosp-fastpath.pdf">SOSP 1999 paper</a>) is a group communication system written in OCaml, developed at Cornell and the Hebrew University. For an application builder, Ensemble provides a library of protocols that can be used for quickly building complex distributed applications. For a distributed systems researcher, Ensemble is a highly modular and reconfigurable toolkit: the high-level protocols provided to applications are really stacks of tiny protocol “layers,” each of whose can be modified or rebuilt to experiment.</li><p>Both Ensemble and FoxNet made strong echoes throughout the design of Mirage (and its precursor software such as <a href="http://anil.recoil.org/papers/2007-eurosys-melange.pdf">Melange</a> in 2007). The <a href="http://openmirage.org/wiki/hello-world">Mirage command-line tool</a> uses staged computation to build a concrete application out of functors, and we are making this even more programmable via a new <a href="https://github.com/mirage/mirage/pull/178">combinator-based functor types</a> library that <a href="http://gazagnaire.org/">Thomas Gazagnaire</a> built, and also experimenting with <a href="https://github.com/ocamllabs/higher">higher kinded polymorphic</a> abstractions.</p>+<p>My thanks to Butler Lampson and Robert Harper for making me go re-read their papers again, and I’d like to leave you with Malte Schwarzkopf’s <a href="http://www.cl.cam.ac.uk/~ms705/netos/os-reading-group.html">OS Reading Group</a> papers for other essential reading in this space. Many more citations immediately relevant to Mirage can also be found in our <a href="http://anil.recoil.org/papers/2013-asplos-mirage.pdf">ASPLOS 2013</a> paper.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Not-quite-so-broken TLS in OCaml</title><link href="https://anil.recoil.org/ideas/nqsb-tls" rel="alternate"></link><published>2014-01-01T00:00:00Z</published><updated>2014-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/nqsb-tls</id><summary type="html"><h1>Not-quite-so-broken TLS in OCaml</h1><p>This is an idea proposed in 2014 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/hannesm">Hannes Mehnert</a> and <a class="contact" href="https://github.com/pqwy">David Kaloper-Mersinjak</a>. It was co-supervised with <a class="contact" href="https://www.cl.cam.ac.uk/~pes20/">Peter Sewell</a>.</p><p>Transport Layer Security (TLS) implementations have a history of security flaws. The immediate causes of these are often programming errors, e.g. in memory manage- ment, but the root causes are more fundamental: the challenges of interpreting the ambiguous prose specification, the complexities inherent in large APIs and code bases, inherently unsafe programming choices, and the impossibility of directly testing conformance between implementations and the specification.</p><p>This internship was to work on nqsb-TLS, our re-engineered approach to security protocol specification and implementation that addresses the above root causes. The same source code serves two roles: it is both a specification of TLS, executable as a test oracle to check conformance of traces from arbitrary implementations, and a usable implementation of TLS; a modular and declarative programming style provides clean separation between its components. Many security flaws are thus excluded by construction.</p>···<li><a class="contact" href="https://github.com/hannesm">Hannes Mehnert</a> and <a class="contact" href="https://github.com/pqwy">David Kaloper-Mersinjak</a> worked on this in an internship after discovering the MirageOS project online, and came over in the summer of 2014. The results have been hguely successful within the OCaml community, as the <a href="https://github.com/mirleft/ocaml-tls">ocaml-tls</a> is still widely used as the defacto TLS stack in many popular OCaml applications.</li><li>The paper was published in USENIX Security; see <a href="https://anil.recoil.org/papers/2015-usenixsec-nqsb">Not-Quite-So-Broken TLS</a>.</li><li>For other stuff that happened during that internship period, see <a href="https://anil.recoil.org/notes/ocamllabs-2014-review">Reviewing the second year of OCaml Labs in 2014</a>.</li>+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Consolidating Trust for Client Groups that use TLS to Secure Connections</title><link href="https://anil.recoil.org/ideas/scaling-tls-trust" rel="alternate"></link><published>2014-01-01T00:00:00Z</published><updated>2014-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/scaling-tls-trust</id><summary type="html"><h1>Consolidating Trust for Client Groups that use TLS to Secure Connections</h1><p>This is an idea proposed in 2014 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Johann Beleites</a>. It was co-supervised with <a class="contact" href="https://anil.recoil.org/">David Sheets</a>.</p>···+features.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reviewing the first year of OCaml Labs in 2013</title><link href="https://anil.recoil.org/notes/the-year-in-ocamllabs" rel="alternate"></link><published>2013-12-29T00:00:00Z</published><updated>2013-12-29T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/the-year-in-ocamllabs</id><summary type="html"><p>This time last year in 2012, I had just<a href="https://anil.recoil.org/2012/10/19/announcing-ocaml-labs.html">announced</a>the formation of a new group called <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/">OCaml···<p><figure class="image-center"><img alt="A successful FPDays tutorial in Cambridge, with all attendees getting a free copy of RWO!" class="content-image" src="https://anil.recoil.org/images/fpdays2013-04.webp" title="A successful FPDays tutorial in Cambridge, with all attendees getting a free copy of RWO!" /><figcaption>A successful FPDays tutorial in Cambridge, with all attendees getting a free copy of RWO!</figcaption></figure>+</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using Docker to bulk-build OPAM packages on Linux</title><link href="https://anil.recoil.org/notes/docker-and-opam" rel="alternate"></link><published>2013-11-15T00:00:00Z</published><updated>2013-11-15T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/docker-and-opam</id><summary type="html"><p>Now that OCaml 4.01 has been released, there is a frenzy of commit···multicore box, and having a <a href="http://blog.docker.io/2013/10/docker-0-6-5-links-container-naming-advanced-port-redirects-host-integration/">linked+external bandwidth. Stay tuned!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MirageOS and XAPI project update at XenSummit</title><link href="https://anil.recoil.org/news/cf9fcf6b-de5d-4a23-a00d-cceadea5b668-1" rel="alternate"></link><published>2013-11-13T00:00:00Z</published><updated>2013-11-13T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/cf9fcf6b-de5d-4a23-a00d-cceadea5b668-1</id><summary type="html"><p>MirageOS and XAPI project update at XenSummit</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Notes from PL and OS 2013 workshop</title><link href="https://anil.recoil.org/notes/liveblog-plos-2013" rel="alternate"></link><published>2013-11-03T00:00:00Z</published><updated>2013-11-03T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/liveblog-plos-2013</id><summary type="html"><p>I co-chaired the Programming Languages and Operating Systems workshop at SOSP 2013, and made livenotes about the (many) papers presented there.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels: Rise of the Virtual Library Operating System</title><link href="https://anil.recoil.org/news/rise-of-libos-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/rise-of-libos-1</id><summary type="html"><p>Article on the Communications of the ACM on unikernels is published</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Trevi: watering down storage hotspots with cool fountain codes</title><link href="https://anil.recoil.org/news/2013-hotnets-trevi-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2013-hotnets-trevi-1</id><summary type="html"><p>Paper on fountain coding for datacentre networking at HotNets 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-hotnets-trevi.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>First edition of Real World OCaml published</title><link href="https://anil.recoil.org/news/rwo-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/rwo-1</id><summary type="html"><p>The 1st Edition of Real World OCaml by O'Reilly associates has been released! There have been flurry of signing events, including an upcoming one at OSCON in Austin.</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Commercial users of functional programming workshop report</title><link href="https://anil.recoil.org/news/2012-cufp-scribe-1" rel="alternate"></link><published>2013-11-01T00:00:00Z</published><updated>2013-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-cufp-scribe-1</id><summary type="html"><p>Published the scribe's report for CUFP 2012</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A 21st Century IDE</title><link href="https://mort.io/blog/21st-century-ide/" rel="alternate"></link><published>2013-10-13T01:00:00Z</published><updated>2013-10-13T01:00:00Z</updated><author><name>RichardM</name></author><id>https://mort.io/blog/21st-century-ide/</id><summary type="html"><p>I finally decided to sit down and get the shiny new <a href="http://kiwi.iuwt.fr/~asmanur/blog/merlin/">merlin</a> mode for OCaml···<pre class="language-lisp z-code"><code class="language-lisp"><span class="z-source z-lisp"><span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-support z-function z-lisp">push</span>'<span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-string z-quoted z-double z-lisp"><span class="z-punctuation z-definition z-string z-begin z-lisp">&quot;</span><span class="z-constant z-character z-escape z-lisp">\\</span>.ml[iylp]?<span class="z-punctuation z-definition z-string z-end z-lisp">&quot;</span></span> . tuareg<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span> auto<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>alist<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span></span><span class="z-source z-lisp"><span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-support z-function z-lisp">push</span> '<span class="z-meta z-group z-lisp"><span class="z-punctuation z-definition z-group z-begin z-lisp">(</span><span class="z-string z-quoted z-double z-lisp"><span class="z-punctuation z-definition z-string z-begin z-lisp">&quot;</span><span class="z-constant z-character z-escape z-lisp">\\</span>.fs[ix]?<span class="z-punctuation z-definition z-string z-end z-lisp">&quot;</span></span> . tuareg<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span> auto<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>mode<span class="z-keyword z-operator z-arithmetic z-lisp">-</span>alist<span class="z-punctuation z-definition z-group z-end z-lisp">)</span></span>+<p>And that’s it!</p></summary><category term="mort’s mythopœia"></category></entry><entry><title>Notes on the first Human Data Interaction workshop</title><link href="https://anil.recoil.org/notes/hdi-workshop-2013-liveblog" rel="alternate"></link><published>2013-10-02T01:00:00Z</published><updated>2013-10-02T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/hdi-workshop-2013-liveblog</id><summary type="html"><p>We held the first <a href="https://hdi-network.org">Human Data Interaction</a> workshop over in Cambridge, with lots of discussion about social networks and the state of play with decentralising them.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml 2013 workshop liveblog</title><link href="https://anil.recoil.org/notes/ocaml-2013-liveblog" rel="alternate"></link><published>2013-09-24T01:00:00Z</published><updated>2013-09-24T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ocaml-2013-liveblog</id><summary type="html"><p>I attended the OCaml 2013 workshop and took live notes of the event. There was a lot going on here, which you can learn more about in the &quot;<a href="https://anil.recoil.org/notes/the-year-in-ocamllabs">Reviewing the first year of OCaml Labs in 2013</a>&quot; roundup as well that I published later in the year.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Liveblogging CUFP 2013</title><link href="https://anil.recoil.org/notes/cufp-2013-liveblog" rel="alternate"></link><published>2013-09-22T01:00:00Z</published><updated>2013-09-22T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/cufp-2013-liveblog</id><summary type="html"><p>The <a href="https://cufp.org">Commercial Uses of Functional Programming</a> workshop is one of the best industry/academia crossover workshops to attend, and these are my livenotes from the 2013 edition.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OPAM 1.1 beta available, with pretty colours</title><link href="https://anil.recoil.org/notes/opam-1-1-beta" rel="alternate"></link><published>2013-09-20T01:00:00Z</published><updated>2013-09-20T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/opam-1-1-beta</id><summary type="html"><p><a class="contact" href="https://github.com/samoht">Thomas Gazagnaire</a> just announced the availability of the···+</ul></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The OCaml Platform v0.1</title><link href="https://anil.recoil.org/news/2013-oud-platform-1" rel="alternate"></link><published>2013-09-01T01:00:00Z</published><updated>2013-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2013-oud-platform-1</id><summary type="html"><p>Paper on the OCaml Platform at the OCaml Workshop 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-oud-platform.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ocamlot: Online OCaml Testing</title><link href="https://anil.recoil.org/news/2013-ocamlot-1" rel="alternate"></link><published>2013-09-01T01:00:00Z</published><updated>2013-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2013-ocamlot-1</id><summary type="html"><p>Presented an OCaml ecosystem testing system</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-ocamlot.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Lost in the Edge: Finding Your Way with DNSSEC Signposts</title><link href="https://anil.recoil.org/news/2013-foci-signposts-1" rel="alternate"></link><published>2013-08-01T01:00:00Z</published><updated>2013-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2013-foci-signposts-1</id><summary type="html"><p>Paper on DNSSEC-based Signpost servers for better p2p communications at USENIX FOCI</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-foci-signposts.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mirage Developer Preview 1 screencast</title><link href="https://anil.recoil.org/news/762795c5-9f3b-499b-a054-b2af37d1ddd2-1" rel="alternate"></link><published>2013-07-26T01:00:00Z</published><updated>2013-07-26T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/762795c5-9f3b-499b-a054-b2af37d1ddd2-1</id><summary type="html"><p>Mirage Developer Preview 1 screencast</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Grepping the source of every OCaml package in OPAM</title><link href="https://anil.recoil.org/notes/grepping-every-known-ocaml-package-source" rel="alternate"></link><published>2013-04-08T01:00:00Z</published><updated>2013-04-08T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/grepping-every-known-ocaml-package-source</id><summary type="html"><p>A regular question that comes up from OCaml developers is how to usesimply run <code>grep</code> over every source archive in OPAM? So that’s the topic···+</code></pre></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels: library operating systems for the cloud</title><link href="https://anil.recoil.org/news/2013-asplos-mirage-1" rel="alternate"></link><published>2013-03-01T00:00:00Z</published><updated>2013-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2013-asplos-mirage-1</id><summary type="html"><p>The first paper on unikernels is pubished at ASPLOS 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2013-asplos-mirage.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Perceived risks of personal data sharing</title><link href="https://anil.recoil.org/news/de13-dataware-1" rel="alternate"></link><published>2013-02-01T00:00:00Z</published><updated>2013-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/de13-dataware-1</id><summary type="html"><p>Paper on dataware computing in the digital economy</p>···&nbsp; <a href="https://anil.recoil.org/papers/de13-dataware.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Concurrent revisions for OCaml</title><link href="https://anil.recoil.org/ideas/concurrent-revisions" rel="alternate"></link><published>2013-01-01T00:00:00Z</published><updated>2013-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/concurrent-revisions</id><summary type="html"><h1>Concurrent revisions for OCaml</h1><p>This is an idea proposed in 2013 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Dimitar Popov</a>.</p>···<p>The dissertation <a href="https://github.com/dpp23/ocaml_revisions/">PDF is available</a>publically along with the <a href="https://github.com/dpp23/ocaml_revisions/">source code to the prototype+and chat server to demonstrate the use of concurrent revisions.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Evolving TCP: how hard can it be?</title><link href="https://anil.recoil.org/news/2012-conext-pvtcp-1" rel="alternate"></link><published>2012-12-01T00:00:00Z</published><updated>2012-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-conext-pvtcp-1</id><summary type="html"><p>Paper on extending TCP in a backwards compatible way at CoNeXT 2013</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-conext-pvtcp.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Announcing OCaml Labs</title><link href="https://anil.recoil.org/notes/announcing-ocaml-labs" rel="alternate"></link><published>2012-10-19T01:00:00Z</published><updated>2012-10-19T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/announcing-ocaml-labs</id><summary type="html"><p>I’m very excited to announce <a href="https://anil.recoil.org/projects/ocamllabs">OCaml Labs</a>, the latest project···applying! There’s some more information available on the <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/collaboration.html">OCaml Labs+about options.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Breaking up is easy (with OPAM)</title><link href="https://anil.recoil.org/notes/breaking-up-mirageos" rel="alternate"></link><published>2012-10-17T01:00:00Z</published><updated>2012-10-17T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/breaking-up-mirageos</id><summary type="html"><p>Once the main advantages of having hypervisors is that you can have strongly isolated services within a single machine. But it's really hard to actually build these specialised services; that is, until MirageOS came along. This post discusses how to build so-called &quot;stub domains&quot; for Xen using MirageOS.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OUD 2012: Towards an OCaml Platform and Introducing OCaml Labs</title><link href="https://anil.recoil.org/news/dd8b1f58-c43c-4422-9963-d3a980529e57-1" rel="alternate"></link><published>2012-09-17T01:00:00Z</published><updated>2012-09-17T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/dd8b1f58-c43c-4422-9963-d3a980529e57-1</id><summary type="html"><p>Recording of the OCaml Labs announcement</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building a Xenstore stub domain with MirageOS</title><link href="https://mirage.io/blog/xenstore-stub-domain" rel="alternate"></link><published>2012-09-12T01:00:00Z</published><updated>2012-09-12T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/xenstore-stub-domain</id><summary type="html"></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Signposts: end-to-end networking in a world of middleboxes</title><link href="https://anil.recoil.org/news/2012-sigcomm-signposts-1" rel="alternate"></link><published>2012-09-01T01:00:00Z</published><updated>2012-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-sigcomm-signposts-1</id><summary type="html"><p>Demoed the Signposts DNSSEC system at SIGCOMM</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-sigcomm-signposts.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Programming the Xen cloud using OCaml</title><link href="https://anil.recoil.org/news/2012-oud-xen-1" rel="alternate"></link><published>2012-09-01T01:00:00Z</published><updated>2012-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-oud-xen-1</id><summary type="html"><p>Paper on programming the Xen cloud using OCaml at the OCaml Workshop</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-oud-xen.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Exploring Compartmentalisation Hypotheses with SOAAP</title><link href="https://anil.recoil.org/news/2012-ahans-soapp-1" rel="alternate"></link><published>2012-09-01T01:00:00Z</published><updated>2012-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-ahans-soapp-1</id><summary type="html"><p>Paper on control flow analysis to break up applications into compartments</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-ahans-soapp.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cost, Performance & Flexibility in OpenFlow: Pick three</title><link href="https://anil.recoil.org/news/2012-iccsdn-mirageflow-1" rel="alternate"></link><published>2012-06-01T01:00:00Z</published><updated>2012-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-iccsdn-mirageflow-1</id><summary type="html"><p>Paper on using MirageOS for better SDN infrastructure with OpenFlow</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-iccsdn-mirageflow.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Confidential carbon commuting: exploring a privacy-sensitive architecture for incentivising 'greener' commuting</title><link href="https://anil.recoil.org/news/2012-mpm-caware-1" rel="alternate"></link><published>2012-04-01T01:00:00Z</published><updated>2012-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-mpm-caware-1</id><summary type="html"><p>Paper on our use of data lockers within Cambridge to incentivise more green commuting patterns</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-mpm-caware.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The case for reconfigurable I/O channels</title><link href="https://anil.recoil.org/news/2012-resolve-fable-1" rel="alternate"></link><published>2012-03-01T00:00:00Z</published><updated>2012-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2012-resolve-fable-1</id><summary type="html"><p>Paper on a new design for reconfigurable IO that copes with heterogenous software/hardware</p>···&nbsp; <a href="https://anil.recoil.org/papers/2012-resolve-fable.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Dreaming of an ARM OCaml</title><link href="https://anil.recoil.org/notes/dreamplug-debian-and-ocaml" rel="alternate"></link><published>2012-02-25T00:00:00Z</published><updated>2012-02-25T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/dreamplug-debian-and-ocaml</id><summary type="html"><p>I’ve been meaning to play with <a href="http://www.plugcomputer.org/">Pluglow-power embedded system around the house. I recently bought a <a href="http://soekris.com/products/net6501.html">Soekris···+do get in touch with me...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Labs</title><link href="https://anil.recoil.org/projects/ocamllabs" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/ocamllabs</id><summary type="html"><div><p><p>I founded a research group called OCaml Labs at the University of Cambridge, with the goal of pushing OCaml and functional programming forward as a platform, making it a more effective tool for all users (including large-scale industrial deployments), while at the same time growing the appeal of the language, broadening its applicability and popularity. Over a decade, we retrofitted multicore parallelism into the mainline OCaml manager, wrote a popular book on the language, and helped start and grow an OCaml package and tooling ecosystem that is thriving today.</p>···<p>All of those groups merged into one unified Tarides in 2022 (<a href="https://tarides.com/blog/2022-01-27-ocaml-labs-joins-tarides/">OCLC</a> and <a href="https://segfault.systems">Segfault</a>), making it easier to manage a growing community of maintainers. There's really exciting work happening there to continue the upstreaming of themulticore OCaml features into mainline OCaml, making unikernels and MirageOS ever more practical and robust to deploy, and shipping end-to-end Windows support in the OCaml toolchain. You can read about all this and more on the <a href="https://tarides.com/blog/">Tarides blog</a>, which is regularly updated with news on their projects.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Macro- and Micro-benchmarking in OCaml</title><link href="https://anil.recoil.org/ideas/macro-micro-benchmarking" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/macro-micro-benchmarking</id><summary type="html"><h1>Macro- and Micro-benchmarking in OCaml</h1><p>This is an idea proposed in 2012 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Sebastian Funk</a>.</p><p>Benchmarking involves the measurement of statistics such as run-time, memory allocations, garbage collections in a running program in order to analyze its performance and behaviour. To scientifically evaluate and understand the performance of a program, there is often a cycle of:</p>···<p><a class="contact" href="https://anil.recoil.org/">Sebastian Funk</a> went on to work at Jane Street on OCaml after his project, and one+2019 talk on his subsequent work can be seen below.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CUFP 2011 Workshop Report</title><link href="https://anil.recoil.org/news/2011-cufp-scribe-1" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2011-cufp-scribe-1</id><summary type="html"><p>Published the scribe's report for CUFP 2011</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Analysis of the Raft Consensus Protocol</title><link href="https://anil.recoil.org/ideas/raft-consensus" rel="alternate"></link><published>2012-01-01T00:00:00Z</published><updated>2012-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/raft-consensus</id><summary type="html"><h1>Analysis of the Raft Consensus Protocol</h1><p>This is an idea proposed in 2012 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Heidi Howard</a>.</p>···<p>The dissertation is available as <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-857.html">UCAM-CL-TR-857</a> in the Cambridge Computer Laboratory technical report series. <a class="contact" href="https://anil.recoil.org/">Heidi Howard</a> continued work on Raft subsequent to submitting this project and published it later in the year as <a href="https://anil.recoil.org/papers/2014-sigops-raft">Raft Refloated: Do We Have Consensus?</a>.</p><p>You can watch <a class="contact" href="https://anil.recoil.org/">Heidi Howard</a> talk about her work in a Computerphile video from 2016:</p>+<p><a class="contact" href="https://anil.recoil.org/">Heidi Howard</a> also continued to work on Raft and distributed consensus later:</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OCaml Meeting 2011 - MirageOS</title><link href="https://anil.recoil.org/news/7d949597-b864-4ada-ab1a-81ff8c0463e2-1" rel="alternate"></link><published>2011-10-19T01:00:00Z</published><updated>2011-10-19T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/7d949597-b864-4ada-ab1a-81ff8c0463e2-1</id><summary type="html"><p>At the OCaml Meeting 2011 speaking about MirageOS</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>An outing to CUFP 2011 for Mirage</title><link href="https://anil.recoil.org/notes/cufp-2011-mirage" rel="alternate"></link><published>2011-09-29T01:00:00Z</published><updated>2011-09-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/cufp-2011-mirage</id><summary type="html"><p>We signed up to do a MirageOS tutorial at ICFP, which is a bit daunting: we had to get all the embedded ARM hardware and laptop support in shape, as well as make it work for a bunch of discerning hackers.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Extending 64-bit MIPS support for LLVM</title><link href="https://anil.recoil.org/ideas/mips-llvm" rel="alternate"></link><published>2011-08-01T01:00:00Z</published><updated>2011-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/mips-llvm</id><summary type="html"><h1>Extending 64-bit MIPS support for LLVM</h1><p>This is an idea proposed in 2011 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/wmorland">William Morland</a>. It was co-supervised with <a class="contact" href="http://www.watson.org/~robert/">Robert M Watson</a>.</p><p>In the summer of 2011, we hosted <a class="contact" href="https://github.com/wmorland">William Morland</a> to do an internship in the Computer Lab just as the<a href="https://www.cl.cam.ac.uk/research/security/ctsrd/">CTSRD/CHERI</a> project kicked off.···LLVM/MIPS backend, filling in missing instructions and finding bugs via exercising the test suite.His LLVM repository is up at <a href="https://github.com/wmorland/LLVM-Mips">GitHub</a>, along withthe discussions from back in 2011 on the <a href="https://discourse.llvm.org/t/mips-target-instruction-set/20373">llvm-dev</a> lists.+There's also a nice poster of this work from the <a href="https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/20111108-ctsrd-pimeeting-poster.pdf">2011 CTSRD project meeting</a>!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Control flow analysis for privilege separation</title><link href="https://anil.recoil.org/ideas/soapp-privgrind" rel="alternate"></link><published>2011-08-01T01:00:00Z</published><updated>2011-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/soapp-privgrind</id><summary type="html"><h1>Control flow analysis for privilege separation</h1><p>This is an idea proposed in 2011 as a good starter project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://uk.linkedin.com/in/hardingcj">Chris Harding</a> and <a class="contact" href="https://research.google/people/ross-mcilroy/">Ross McIlroy</a>. It was co-supervised with <a class="contact" href="http://www.watson.org/~robert/">Robert M Watson</a>.</p><p>In the summer of 2011, we hosted <a class="contact" href="https://uk.linkedin.com/in/hardingcj">Chris Harding</a> and <a class="contact" href="https://research.google/people/ross-mcilroy/">Ross McIlroy</a> to do an···(we all got busy with other projects). There is a workshop paper on <a href="https://anil.recoil.org/papers/2012-ahans-soapp">Exploring Compartmentalisation Hypotheses with SOAAP</a>+more since.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Dynamics for ML using Meta-Programming</title><link href="https://anil.recoil.org/news/2011-dynamics-ml-1" rel="alternate"></link><published>2011-07-01T01:00:00Z</published><updated>2011-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2011-dynamics-ml-1</id><summary type="html"><p>Published dyntype at the Workshop on Generative Technologies</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-dynamics-ml.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Dynamics for ML using Meta-Programming</title><link href="https://anil.recoil.org/news/2010-dyntype-wgt-1" rel="alternate"></link><published>2011-07-01T01:00:00Z</published><updated>2011-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2010-dyntype-wgt-1</id><summary type="html"><p>Paper on statically typed value persistence for OCaml in ENTCS 2011</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-dyntype-wgt.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Delimited continuations vs Lwt for threads</title><link href="https://mirage.io/blog/delimcc-vs-lwt" rel="alternate"></link><published>2011-06-18T01:00:00Z</published><updated>2011-06-18T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/delimited-cont-vs-lwt</id><summary type="html"></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>DataCaml: distributed dataflow programming in OCaml</title><link href="https://anil.recoil.org/notes/datacaml-with-ciel" rel="alternate"></link><published>2011-06-11T01:00:00Z</published><updated>2011-06-11T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/datacaml-with-ciel</id><summary type="html"><p>Distributed programming frameworks like<a href="http://research.microsoft.com/en-us/projects/dryad/">Dryad</a> are popular···<a href="http://www.cl.cam.ac.uk/~ms705">Malte</a> for answering my incessant CIEL+progress and a research prototype, and feedback is most welcome.</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Reconfigurable Data Processing for Clouds</title><link href="https://anil.recoil.org/news/2011-fccm-cloudfpga-1" rel="alternate"></link><published>2011-05-01T01:00:00Z</published><updated>2011-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2011-fccm-cloudfpga-1</id><summary type="html"><p>Paper on what a Xen+FPGA cloud would look like at FCCM</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-fccm-cloudfpga.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional programming gone wild in the SRG</title><link href="https://anil.recoil.org/notes/srg-fp" rel="alternate"></link><published>2011-04-18T01:00:00Z</published><updated>2011-04-18T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/srg-fp</id><summary type="html"><p>We've been doing loads of OCaml programming in the Systems Research Group, and this blog post lays out some of the things going on. It ranges from OCaml hacking, over to the CIEL distributed execution engine, and even some Haskell hacking ongoing for distributed execution.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Camel Spotting in Paris</title><link href="https://anil.recoil.org/notes/ocaml-users-group" rel="alternate"></link><published>2011-04-15T01:00:00Z</published><updated>2011-04-15T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/ocaml-users-group</id><summary type="html"><p>I'm at the <a href="https://forge.ocamlcore.org/plugins/mediawiki/wiki/ocaml-meeting/index.php/OCamlMeeting2011">2011 OCaml Users Group</a> in Paris, reporting on some splendid talks this year. It looked like around 60-70 people in the room, and I had the pleasure of meeting users all the way from <a href="http://ru.linkedin.com/pub/dmitry-bely/4/955/717">Russia</a> to <a href="http://ashishagarwal.org/about/">New York</a> as well as all the Europeans!</p><p>First up was <a href="http://www.lsv.ens-cachan.fr/~chambart/">Pierre Chambart</a> talking about the <a href="http://ocsigen.org/js_of_ocaml/">js_of_ocaml</a> compiler. It compiles OCaml bytecode directly to Javascript, with few external dependencies. Since the bytecode format changes very rarely, it is simpler to maintain than alternatives (such as Jake Donham’s <a href="https://github.com/jaked/ocamljs">ocamljs</a>) that require patching the compiler tool-chain. Javascript objects are mapped to dynamic OCaml objects via a light-weight <code>##</code> operator, so you can simply write code like:</p>···<p><figure class="image-center"><img alt="" class="content-image" src="https://anil.recoil.org/images/sf-ocaml.webp" title="" /><figcaption></figcaption></figure><p>Of course, not all of the OCaml community action is in France. The ever-social <a href="http://www.twitter.com/jakedonham">Jake Donham</a> organised the First Ever San Francisco User Group that I attended when I was over there a few weeks ago. Ok, admittedly it was mainly French people there too, but it was excellent to meet up with <a href="http://www.linkedin.com/pub/mika-illouz/0/a02/7b4">Mika</a>, <a href="http://martin.jambon.free.fr/">Martin</a>, <a href="http://www.linkedin.com/pub/julien-verlaguet/20/10a/b57">Julien</a>, <a href="http://fr.linkedin.com/in/henribinsztok">Henri</a> and of course Jake when over there.</p>+<p>We should definitely have more of these fun local meetups, and a number of other OCaml hackers I mentioned it to want to attend next time in the Bay Area, if only to cry into their drinks about the state of multi-core... <em>just kidding</em>, <a href="http://www.ocamlpro.com">OCamlPro</a> is hard at work fixing that after all :-)</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>CIEL: A universal execution engine for distributed data-flow computing</title><link href="https://anil.recoil.org/news/2011-nsdi-ciel-1" rel="alternate"></link><published>2011-03-01T00:00:00Z</published><updated>2011-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2011-nsdi-ciel-1</id><summary type="html"><p>Paper on CIEL, a distributed dataflow engine, at USENIX NSDI 2011</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-nsdi-ciel.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unclouded vision</title><link href="https://anil.recoil.org/news/2011-icdcn-droplets-1" rel="alternate"></link><published>2011-01-01T00:00:00Z</published><updated>2011-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2011-icdcn-droplets-1</id><summary type="html"><p>Paper on a vision for a semi-federated cloud for personal data at ICDCN</p>···&nbsp; <a href="https://anil.recoil.org/papers/2011-icdcn-droplets.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Simulating XMPP Group Communication</title><link href="https://anil.recoil.org/ideas/xmpp-group-comms" rel="alternate"></link><published>2011-01-01T00:00:00Z</published><updated>2011-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/xmpp-group-comms</id><summary type="html"><h1>Simulating XMPP Group Communication</h1><p>This is an idea proposed in 2011 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://farhanmannan.com">Farhān Mannān</a>.</p><p>The problem of getting a digital message from one place to another has a staggering range of possible scenarios, constraints and applications. Humans and devices are in constant dialogue, with various constraints and contracts being invisibly maintained. Even the most flippant instant message sets layers of protocols in motion, all straining to resolve identities and propagate information transparently across disparate physical components that must present a logically unified front to users. Subtleties like authentication, encryption and anonymity abound.</p><p>This project aims to build an OCaml-based simulator (using the <code>ocamlgraph</code> library) to build an XMPP protocol simulator that can model the networks, agents and protocols involved in XMPP-based group communication. The project is twofold and modular: the core is a simulator which is used to investigate the properties of gossip protocols acting on different graph topologies. The simulator can be parameterised on an RPC implementation so that rather than using simulated graphs, it can monitor the performance of the algorithms on real networks as well. An attempted extension is implementation of a functional OCaml RPC abstraction over XMPP which would be compatible with the simulator and be usable with <a href="https://mirage.io">MirageOS</a>.</p>···<p>The source code to the <a href="https://github.com/f6m6/gossip">OCaml XMPP simulator</a>+should be in the Cambridge Computer Lab archives somewhere.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional ABNF parser generators</title><link href="https://anil.recoil.org/ideas/functional-imap" rel="alternate"></link><published>2011-01-01T00:00:00Z</published><updated>2011-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/functional-imap</id><summary type="html"><h1>Functional ABNF parser generators</h1><p>This is an idea proposed in 2011 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://github.com/ns476">Nicholas Skehin</a>.</p>···+from the author, but not published.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Building the Xen toolstack using OCaml</title><link href="https://anil.recoil.org/news/43ab3ae0-9ffc-474f-aa02-3cc1139f54d1-1" rel="alternate"></link><published>2010-11-05T00:00:00Z</published><updated>2010-11-05T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/43ab3ae0-9ffc-474f-aa02-3cc1139f54d1-1</id><summary type="html"><p>Talk on building the Xen toolstack using OCaml</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Mirage: A New Multi-Scale Operating System for Clouds and Crowds (2014)</title><link href="https://anil.recoil.org/news/be2f049b-174a-4e5b-b30e-0319793487c7-1" rel="alternate"></link><published>2010-10-25T01:00:00Z</published><updated>2010-10-25T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/be2f049b-174a-4e5b-b30e-0319793487c7-1</id><summary type="html"><p>At LinkedIn giving tech talk about Mirage</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Self-hosting MirageOS website</title><link href="https://anil.recoil.org/notes/mirage-self-hosting" rel="alternate"></link><published>2010-10-11T01:00:00Z</published><updated>2010-10-11T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/mirage-self-hosting</id><summary type="html"><p>I managed to get early <a href="https://mirage.io">MirageOS</a> suitably feature-complete enough that we could run the Mirage website using Mirage. This was all very satisfying after hacking on the <a href="https://github.com/mirage/mirage-tcpip">TCP/IP</a> stack for ages.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The personal container, or your life in bits</title><link href="https://anil.recoil.org/news/de10-perscon-1" rel="alternate"></link><published>2010-10-01T01:00:00Z</published><updated>2010-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/de10-perscon-1</id><summary type="html"><p>Paper on personal containers for data management at the UK Digital Economy meeting</p>···&nbsp; <a href="https://anil.recoil.org/papers/de10-perscon.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using functional programming within an industrial product group: perspectives and perceptions</title><link href="https://anil.recoil.org/news/2010-icfp-xen-1" rel="alternate"></link><published>2010-09-01T01:00:00Z</published><updated>2010-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2010-icfp-xen-1</id><summary type="html"><p>Paper on our experiences with writing the Xen control stack in OCaml at ICFP 2010</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-icfp-xen.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Turning Down the LAMP: Software Specialisation for the Cloud</title><link href="https://anil.recoil.org/news/4957325f-d7f5-4a29-95b6-a1e1f61ea5cf-1" rel="alternate"></link><published>2010-06-22T01:00:00Z</published><updated>2010-06-22T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/4957325f-d7f5-4a29-95b6-a1e1f61ea5cf-1</id><summary type="html"><p>At HotCloud for the first talk about MirageOS</p>+<p><div class="video-center"></div></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Turning Down the LAMP: Software Specialisation for the Cloud</title><link href="https://anil.recoil.org/news/2010-hotcloud-lamp-1" rel="alternate"></link><published>2010-06-01T01:00:00Z</published><updated>2010-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2010-hotcloud-lamp-1</id><summary type="html"><p>Workshop paper on the early MirageOS architecture and evaluation at HotCloud 2010</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-hotcloud-lamp.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Creating high-performance, statically type-safe network applications</title><link href="https://anil.recoil.org/news/anil-phd-thesis-2" rel="alternate"></link><published>2010-05-01T01:00:00Z</published><updated>2010-05-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/anil-phd-thesis-2</id><summary type="html"><p>My PhD thesis is now also published as a print book</p>···&nbsp; <a href="https://anil.recoil.org/papers/anil-phd-thesis.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Yurts for Digital Nomads</title><link href="https://anil.recoil.org/notes/yurts-for-digital-nomads" rel="alternate"></link><published>2010-04-29T01:00:00Z</published><updated>2010-04-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/yurts-for-digital-nomads</id><summary type="html"><p>The App Engine data collector for Personal Containers is coming on nicely, and is on track for an alpha preview release <a href="http://github.com/avsm/perscon/blob/master/README.md">fairly soon</a>. Working with AppEngine has been interesting; it’s got excellent availability and you can’t beat the price (free), but coding robust Python that doesn’t trip over the tight resource limits for individual requests, asynchronous tasks and queries is tricky. While it is good for small records such as my <a href="http://github.com/avsm/perscon/tree/master/plugins/iPhone/">iPhone</a> or Find My iPhone <a href="http://github.com/avsm/perscon/blob/master/appengine/perscon/drivers/fmi.py">GPS traces</a> traces, it doesn’t work so well with my gigabytes of photographs or decades of e-mail.</p><p>This confirmed our earlier intuition that there is no one perfect solution for personal data handling; instead, we need to <em>embrace diversity</em> and construct an infrastructure that can cope with change over the coming decades. Mobile programming has changed beyond recognition in just a few years, and cloud providers are specialising in different ways (e.g. <a href="http://www.picloud.com/">PiCloud</a> for simple compute, or <a href="http://aws.amazon.com">EC2</a> for fancy services like elastic <a href="http://aws.amazon.com/elasticloadbalancing/">load balancing</a>).</p><p>So to recognise this, we are building components that all interoperate with your personal data, keep it secure, and ensure it persists for more than a few years. <a class="contact" href="https://cs.brown.edu/people/malte/">Malte Schwarzkopf</a> came up with the term &quot;digital <a href="http://en.wikipedia.org/wiki/Yurt">yurts</a>&quot;, and it's stuck. We’ve written a <a href="http://perscon.net/papers/digital-yurts-draft1.pdf">draft paper</a> about it, and would love to hear your comments and feedback on the approach.</p><p><img alt="" class="content-image" src="https://anil.recoil.org/images/nomads-diagram.webp" title="" />···<p>If you’re interested, join our <a href="http://perscon.net/contact.html">group</a>or contact <a class="contact" href="https://anil.recoil.org">Anil Madhavapeddy</a> directly. At this stage, you+over the next few months...</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Pulling together a user interface</title><link href="https://anil.recoil.org/notes/uiprototype" rel="alternate"></link><published>2010-04-15T01:00:00Z</published><updated>2010-04-15T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/uiprototype</id><summary type="html"><p>We’ve been <a href="http://github.com/avsm/perscon">hacking</a> away on fleshing out the <a href="http://code.google.com/appengine">App Engine</a> node for personal containers. We’re building this node first because, crucially, deploying an App Engine VM is free to anyone with a Google account. The service itself is limited since you can only respond to HTTP or XMPP requests and do HTTP fetches, and so its primary use is as an always-on data collection service with a webmail-style UI written using <a href="http://www.extjs.com/">extjs</a>.</p><p>Personal containers gather data from a wide variety of sources, and normalise them into a format which understands people (address book entries, with a set of services such as e-mail, phone, IM and online IDs), places (GPS, WOEID), media (photos, movies) and messages (Tweets, emails, Facebook messages). I’ll post more about the data model behind personal containers in a follow-up as the format settles.</p><p><figure class="image-center"><img alt="" class="content-image" src="https://anil.recoil.org/images/perscon-extjs.webp" title="" /><figcaption></figcaption></figure>···<li><a href="http://github.com/avsm/perscon/tree/master/plugins/MacOS-SyncServices/">SyncServices</a> hooks into the MacOS X <a href="http://developer.apple.com/macosx/syncservices.html">sync framework</a> and initially subscribes to Address Book updates. This seems to be the first open-source sync alternative to the expensive Mobile Me, as far as I can tell. I’m planning to expand this to also subscribe to the full set of sync information (e.g. calendars).</li><p>I'm switching tacks briefly; we received an <a href="http://aws.amazon.com/education/aws-in-education-research-grants/">Amazon Research Grant</a> recently and I’m building a node that runs as a Linux server to act as a longer-term archival and search server. This is being written in OCaml and uses <a href="http://1978th.net/tokyocabinet/">Tokyo Cabinet</a> (with Jake Donham’s excellent <a href="http://github.com/jaked/otoky">bindings</a>) and so should be speedy and a useful alternative implementation of the HTTP REST interface. The plan is to automatically synchronize meta-data across all the nodes of a personal container, but store large and historical data away from expensive cloud storage such as App Engine.</p>+<p>There are lots more plugins in development, such as <a href="http://foursquare.com">Foursquare</a> and <a href="http://gowalla.com">Gowalla</a> OAuth collectors, an <a href="http://github.com/avsm/perscon/tree/master/android">Android</a> mobile application to upload location and contacts information, and Google GData synchronization. If you’re interested in one of these or something else, please do <a href="http://perscon.net/contact.html">get in touch</a> or just fork the <a href="http://github.com/avsm/perscon">project</a> and start hacking!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Multiscale not multicore: efficient heterogeneous cloud computing</title><link href="https://anil.recoil.org/news/2010-bcs-visions-1" rel="alternate"></link><published>2010-04-01T01:00:00Z</published><updated>2010-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2010-bcs-visions-1</id><summary type="html"><p>Paper on our vision for multiscale programming at the BCS Visions 2010 conference</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-bcs-visions.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Opening a website</title><link href="https://anil.recoil.org/notes/opening-a-website" rel="alternate"></link><published>2010-03-29T01:00:00Z</published><updated>2010-03-29T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/opening-a-website</id><summary type="html"><p>We've been working away at building a new type of database to help individualsprototypes run freely on <a href="https://web.archive.org/web/20110509135538/http://code.google.com/appengine">Google App Engine</a> to gather your data···with the <a href="https://web.archive.org/web/20110509135538/http://perscon.net/install.html">installation</a> instructions to clone your own version. After that, readup on the <a href="https://web.archive.org/web/20110509135538/http://perscon.net/design.html">design</a> of the system (which is still changing as we research new+data source, just clone the <a href="https://github.com/avsm/perscon">code</a> and send us back fixes!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Privacy Butler: A Personal Privacy Rights Manager for Online Presence</title><link href="https://anil.recoil.org/news/2010-smarte-privacybutler-1" rel="alternate"></link><published>2010-03-01T00:00:00Z</published><updated>2010-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2010-smarte-privacybutler-1</id><summary type="html"><p>Paper on privacy butler services for more private data management</p>···&nbsp; <a href="https://anil.recoil.org/papers/2010-smarte-privacybutler.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Creating high-performance, statically type-safe network applications</title><link href="https://anil.recoil.org/news/anil-phd-thesis-1" rel="alternate"></link><published>2010-03-01T00:00:00Z</published><updated>2010-03-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/anil-phd-thesis-1</id><summary type="html"><p>PhD thesis now available as a technical report</p>···&nbsp; <a href="https://anil.recoil.org/papers/anil-phd-thesis.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Unikernels</title><link href="https://anil.recoil.org/projects/unikernels" rel="alternate"></link><published>2010-01-01T00:00:00Z</published><updated>2010-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/unikernels</id><summary type="html"><div><p><p>I proposed the concept of &quot;unikernels&quot; -- single-purpose appliances that are compile-time specialised into standalone bootable kernels, and sealed against modification when deployed to a cloud platform. In return they offer significant reduction in image sizes, improved efficiency and security, and reduce operational costs. I also co-founded the MirageOS project which is one of the first complete unikernel frameworks, and also integrated them to create the Docker for Desktop apps that are used by hundreds of millions of users daily.</p><p>While working on <a href="https://anil.recoil.org/projects/perscon">Personal Containers</a> in late 2008, I had a need to run lots of distributed edge nodes holding personal data. The state of computer security is generally a disaster when it comes to leaving software unupgraded for even a few months, so building robust infrastructure that normal people could use was proving quite difficult. Meanwhile, my PhD research in building <a href="https://anil.recoil.org/projects/melange">Functional Internet Services</a> had constructed really viable prototypes of network protocols written in pure OCaml, and I'd previously used OCaml industrially in the <a href="https://anil.recoil.org/projects/xen">Xen Hypervisor</a> hypervisor to write lots of system management code.</p>···<p>The wider industry also saw a number of interesting spinouts, as many other communities also latched on to the ideas of unikernels and began their own language-specific and domain-specific versions. I joined the advisory boards of IncludeOS (now sadly defunct) and Zededa (now thankfully going from strength to strength in edge computing) to help guide strategy and adoption outside of just MirageOS. Dr Pierre Oliver maintains a great list of <a href="https://github.com/olivierpierre/unikernel-papers">unikernel papers</a> where you can see the diversity and interest in unikernels. One of the most exciting implementations of a C-based unikernel can be found in <a href="https://www.unikraft.org/">Unikraft</a>.</p><p>As for my interest in unikernels moving forward? My heart always remains in finding the intersection of <em>safety</em> and <em>performance</em>, which means I mostly pay attention to language-based approaches. MirageOS continues to thrive (particularly with the effect system being integrated into OCaml in 2022, which will really change the way we develop OCaml code for embedded systems). Since 2020, I've been investigating the application of DIFC to embedded infrastructure, for example via <a href="https://anil.recoil.org/papers/2019-edgesys-snape">Snape: The Dark Art of Handling Heterogeneous Enclaves</a>.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional Reactive Web Applications</title><link href="https://anil.recoil.org/ideas/frp-web-ocaml" rel="alternate"></link><published>2010-01-01T00:00:00Z</published><updated>2010-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/ideas/frp-web-ocaml</id><summary type="html"><h1>Functional Reactive Web Applications</h1><p>This is an idea proposed in 2010 as a Cambridge Computer Science Part II project, and has been <span class="idea-completed">completed</span> by <a class="contact" href="https://anil.recoil.org/">Henry Hughes</a>.</p>···+The source code is also archived but not publically available.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Combining Static Model Checking with Dynamic Enforcement Using the Statecall Policy Language</title><link href="https://anil.recoil.org/news/2009-icfem-spl-1" rel="alternate"></link><published>2009-11-01T00:00:00Z</published><updated>2009-11-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2009-icfem-spl-1</id><summary type="html"><p>Paper on a DSL for specifying temporal protocol automata at ICFEM 2009</p>···&nbsp; <a href="https://anil.recoil.org/papers/2009-icfem-spl.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Personal Containers</title><link href="https://anil.recoil.org/projects/perscon" rel="alternate"></link><published>2009-01-01T00:00:00Z</published><updated>2009-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/perscon</id><summary type="html"><div><p><p>As cloud computing empowered the creation of vast data silos, I investigated how decentralised technologies might be deployed to allow individuals more vertical control over their own data. Personal containers was the prototype we built to learn how to stem the flow of our information out to the ad-driven social tarpits. We also deployed personal containers in an experimental data locker system at the University of Cambridge in order to incentivise lower-carbon travel schemes.</p>···<p>My work on personal data processing petered out from a research perspective in around 2013 since the underlying infrastructure I had built really started gathering steam with <a href="https://anil.recoil.org/projects/unikernels">Unikernels</a> and <a href="https://anil.recoil.org/projects/ocamllabs">OCaml Labs</a>. We hadn't quite cracked the problem of how to break the cloud hegemony, but (as with XenoServers and Xen), the pieces that succeeded emerged from the research questions we asked.However, I don't consider this project permanently closed by any means -- after all, I've been self hosting my email since 1997! We've been working steadily over the past decade of MirageOS (as of 2021) to build out a really solid, self-hosted protocol stack that will work as a unikernel. I am revisiting the question of decentralisation in the form of physical infrastructure in the <a href="https://anil.recoil.org/projects/osmose">Interspatial OS</a> project, and you can read my early thoughts in <a href="https://anil.recoil.org/papers/2018-hotpost-osmose">An architecture for interspatial communication</a>.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Peeking under the hood of High Availability</title><link href="https://anil.recoil.org/notes/peeking-under-the-hood-of-high-availability" rel="alternate"></link><published>2008-09-17T01:00:00Z</published><updated>2008-09-17T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/peeking-under-the-hood-of-high-availability</id><summary type="html"><p>Well, the big launch of <a href="http://www.xenserver5.com/">XenServer 5</a> has gone smoothly, and with it have arrived a flood of questions about how exactly the new <a href="https://web.archive.org/web/20081121042533/https://xenserver5.com/ha.php">High Availability</a> functionality works. I’ll use this post to explain the overall architecture of HA in XenServer 5, and also how some of the fault detection and failure planning works.</p><p>Fundamentally, HA is about making sure important VMs are always running on a resource pool. There are two aspects to this: reliably <strong>detecting host failure</strong>, and computing a <strong>failure plan</strong> to deal with swift recovery.</p><p>Detecting host failure reliably is difficult since you need to remotely distinguish between a host disappearing for a while versus exploding in a ball of flames. If we mistakenly decide that a master host has broken down and elect a new master in its place, there may be unpredictable results if the original host were to make a comeback! Similarly, if there is a network issue and a resource pool splits into two equal halves, we need to ensure that only one half accesses the shared storage and not both simultaneously.</p>···+<p>So, I hope this short article has given you a taster... just kidding! This post is almost as long as my PhD thesis, but then, HA is a complex topic. Please do feel free to get back to me with comments and feedback about how we can improve it in the future releases, or if you just love it the way it is. Many thanks to <a class="contact" href="https://github.com/djs55">Dave Scott</a>, <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a>, Ewan Mellor and Hugh Warrington for their input to this article.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Shedding light on XenApp on XenServer performance tuning</title><link href="https://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuning" rel="alternate"></link><published>2008-08-04T01:00:00Z</published><updated>2008-08-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuning</id><summary type="html"><p>You won’t be surprised to hear that we spend a lot of time improvinggood benchmark comparisons available (such as the <a href="http://community.citrix.com/x/_4ENAg">Tolly···+<a href="http://xen.org/">xen.org</a>, check out the source, and get coding…</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Installing Ubuntu on XenServer</title><link href="https://anil.recoil.org/notes/installing-ubuntu-on-xenserver" rel="alternate"></link><published>2008-07-02T01:00:00Z</published><updated>2008-07-02T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/installing-ubuntu-on-xenserver</id><summary type="html"><p>I thought I’d kick off my Citrix blog with a question I get pretty often<p>The most common solution people find is to use the &quot;Other Install Media&quot;···+their Linux beards remain long and uncut.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Enhancing web browsing security on public terminals using mobile composition</title><link href="https://anil.recoil.org/news/2008-mobisys-splittrust-1" rel="alternate"></link><published>2008-06-01T01:00:00Z</published><updated>2008-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2008-mobisys-splittrust-1</id><summary type="html"><p>Paper on splitting trust between smartphones and webrowsers at MobiSys 2008</p>···&nbsp; <a href="https://anil.recoil.org/papers/2008-mobisys-splittrust.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Melange: creating a "functional" internet</title><link href="https://anil.recoil.org/news/2007-eurosys-melange-1" rel="alternate"></link><published>2007-06-01T01:00:00Z</published><updated>2007-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2007-eurosys-melange-1</id><summary type="html"><p>Won best student paper for my PhD work on a high-performance functional packet parsing DSL at Eurosys 2007!</p>···&nbsp; <a href="https://anil.recoil.org/papers/2007-eurosys-melange.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Interacting with mobile services: an evaluation of camera-phones and visual tags</title><link href="https://anil.recoil.org/news/2006-puc-tags-1" rel="alternate"></link><published>2007-02-01T00:00:00Z</published><updated>2007-02-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2006-puc-tags-1</id><summary type="html"><p>Journal paper on interacting with mobile services using camera-phones</p>···&nbsp; <a href="https://anil.recoil.org/papers/2006-puc-tags.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Fighting Crimeware: An Architecture for Split-Trust Web Applications</title><link href="https://anil.recoil.org/news/2006-fighting-crimeware-1" rel="alternate"></link><published>2006-04-01T01:00:00Z</published><updated>2006-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2006-fighting-crimeware-1</id><summary type="html"><p>New paper <a href="https://anil.recoil.org/papers/2006-fighting-crimeware">Fighting Crimeware: An Architecture for Split-Trust Web Applications</a> available</p>···&nbsp; <a href="https://anil.recoil.org/papers/2006-fighting-crimeware.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>SPLAT: A Tool for Model-Checking and Dynamically-Enforcing Abstractions</title><link href="https://anil.recoil.org/news/2005-spin-splat-1" rel="alternate"></link><published>2005-08-01T01:00:00Z</published><updated>2005-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-spin-splat-1</id><summary type="html"><p>Workshop paper on temporal automata for protocol specifications at SPIN 2005</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-spin-splat.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ubiquitious Computing needs to catch up with Ubiquitous Media</title><link href="https://anil.recoil.org/news/2005-ubiapp-ubimedia-1" rel="alternate"></link><published>2005-07-01T01:00:00Z</published><updated>2005-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-ubiapp-ubimedia-1</id><summary type="html"><p>Position paper on ubiquitous computing approaches to emerging stream media appliances</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ubiapp-ubimedia.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Audio networking: the forgotten wireless technology</title><link href="https://anil.recoil.org/news/2005-ieee-audio-1" rel="alternate"></link><published>2005-07-01T01:00:00Z</published><updated>2005-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-ieee-audio-1</id><summary type="html"><p>New paper <a href="https://anil.recoil.org/papers/2005-ieee-audio">Audio networking: the forgotten wireless technology</a> available</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ieee-audio.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>A Study of Bluetooth Propagation Using Accurate Indoor Location Mapping</title><link href="https://anil.recoil.org/news/2005-ubicomp-bluetooth-1" rel="alternate"></link><published>2005-07-01T01:00:00Z</published><updated>2005-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-ubicomp-bluetooth-1</id><summary type="html"><p>Ubicomp paper on a study of indoor bluetooth propagation using the Active Bat system</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ubicomp-bluetooth.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>OpenBSD C2K5 thoughts</title><link href="https://anil.recoil.org/notes/c2k5-thoughts" rel="alternate"></link><published>2005-06-04T01:00:00Z</published><updated>2005-06-04T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/c2k5-thoughts</id><summary type="html"><p>Finally had some time to get back from the OpenBSD hackathon and take···OCaml-based daemons that <a class="contact" href="https://github.com/djs55">Dave Scott</a> and I have been+high-level issues.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>On the challenge of delivering high-performance, dependable, model-checked internet servers</title><link href="https://anil.recoil.org/news/2005-hotdep-spl-1" rel="alternate"></link><published>2005-06-01T01:00:00Z</published><updated>2005-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-hotdep-spl-1</id><summary type="html"><p>Paper on temporal automata for protocol implementations at HotDep 2005</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-hotdep-spl.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using visual tags to bypass Bluetooth device discovery</title><link href="https://anil.recoil.org/news/2005-mc2r-visualtags-1" rel="alternate"></link><published>2005-01-01T00:00:00Z</published><updated>2005-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-mc2r-visualtags-1</id><summary type="html"><p>While designing <a href="https://anil.recoil.org/projects/ubiqinteraction">Spotcodes</a>, we realised that visual···&nbsp; <a href="https://anil.recoil.org/papers/2005-mc2r-visualtags.bib">BIB</a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using smart phones to access site-specific services</title><link href="https://anil.recoil.org/news/2005-ieee-smartphones-1" rel="alternate"></link><published>2005-01-01T00:00:00Z</published><updated>2005-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-ieee-smartphones-1</id><summary type="html"><p>Article on using cameraphones to access site-specific services in IEEE Pervasive Computing</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-ieee-smartphones.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The Broadband Phone Network: Experiences with Context-Aware Telephony</title><link href="https://anil.recoil.org/news/2005-bbphone-1" rel="alternate"></link><published>2005-01-01T00:00:00Z</published><updated>2005-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2005-bbphone-1</id><summary type="html"><p>Report on our hacking on the AT&amp;T Broadband Phone</p>···&nbsp; <a href="https://anil.recoil.org/papers/2005-bbphone.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using camera-phones to interact with context-aware mobile services</title><link href="https://anil.recoil.org/news/2004-spotcodes-1" rel="alternate"></link><published>2004-12-01T00:00:00Z</published><updated>2004-12-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2004-spotcodes-1</id><summary type="html"><p>A technical report is now available on our SpotCode visual tag system, and includes a user study leadby <a class="contact" href="https://www.cst.cam.ac.uk/people/eft20">Eleanor Toye Scott</a> which tested its benefits against conventional mobile interfaces.</p>···&nbsp; <a href="https://anil.recoil.org/papers/2004-spotcodes.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Connecting Paper and Online Worlds by Cellphone</title><link href="https://anil.recoil.org/notes/spotcodes-nytimes" rel="alternate"></link><published>2004-10-07T01:00:00Z</published><updated>2004-10-07T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/spotcodes-nytimes</id><summary type="html"><p>In what is definitely our most exciting media coverage yet, <a href="https://anil.recoil.org/projects/ubiqinteraction">Spotcodes</a> are featured in the New York Times!</p><p>When you think of a public information kiosk, your mental picture might include greasy touch screens, broken trackballs and frozen monitors.But researchers at an Intel-financed lab at Cambridge University have developed a way to replace displays like those with something portable, not to mention personal: a cellphone's built-in camera and screen. They and others plan to use commercially available hardware to turn the camera-equipped cellphone into a mouse, remote control, keyboard and more.···<p><a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a> got cited as I wasn't in the department that day when the journalist showed up at Intel Research!</p><p>&quot;Instead of having all the hassle of putting things out in the environment that you have to maintain and that people can vandalize, you get a cheap PC, shove it in the back room of your shop and just put posters out front,&quot; said Richard Sharp, an Intel researcher here.</p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Using Camera-Phones to Enhance Human-Computer Interaction</title><link href="https://anil.recoil.org/news/2004-ubicomp-camera-1" rel="alternate"></link><published>2004-09-01T01:00:00Z</published><updated>2004-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/2004-ubicomp-camera-1</id><summary type="html"><p>We gave a demo at <a href="https://www.ubicomp.org/ubicomp2004/">UbiComp 2004</a> all the way in Tokyo···&nbsp; <a href="https://anil.recoil.org/papers/2004-ubicomp-camera.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>MIT Technology review covers SpotCodes</title><link href="https://anil.recoil.org/notes/mit-spotcodes" rel="alternate"></link><published>2004-09-01T01:00:00Z</published><updated>2004-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/mit-spotcodes</id><summary type="html"><p>We got more coverage of <a href="https://en.wikipedia.org/wiki/ShotCode">SpotCodes</a> and our startup <a href="https://anil.recoil.org/projects/ubiqinteraction">High Energy Magic</a>, leading to lots of interest in the technology.</p><p>Public touch-screen displays such as airport check-in kiosks aren’t known for having versatile interfaces; they usually lack keyboards or pointing devices, limiting users to a few navigational buttons. But new software from High Energy Magic of Cambridge, England, turns a camera phone with a Bluetooth wireless connection into a portable mouse and keyboard that can take full command of public displays, doing away with the old touch screen. Working with Intel’s Cambridge research lab, High Energy Magic has developed a set of circular symbols, similar in concept to bar codes, that can be displayed by public terminals. Camera phones loaded with the company’s software can translate the symbols into data. Once a phone locks onto one of the symbols, it uses the Bluetooth short-range wireless protocol to send information about its size, position, and orientation to the computer running the display. The phone can then act as a mouse, manipulating on-screen controls such as scroll bars. The company plans to license the technology to businesses, such as travel agencies, that operate public kiosks.<cite>-- <a href="https://web.archive.org/web/20241202023917/https://cdn.technologyreview.com/s/403022/phone-it-in/">MIT Technology Review</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Exploring tradeoffs in location-aware gaming using smartphones</title><link href="https://anil.recoil.org/news/netgames04-ctf-1" rel="alternate"></link><published>2004-08-01T01:00:00Z</published><updated>2004-08-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/netgames04-ctf-1</id><summary type="html"><p>The summer of 2004 was sufficient full of procrastination that the membersof the <a href="https://web.archive.org/web/20041212123550/http://sn17.org/">SN17 collective</a> in the···&nbsp; <a href="https://anil.recoil.org/papers/netgames04-ctf.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>From the prawn of time</title><link href="https://anil.recoil.org/notes/wired-spotcode" rel="alternate"></link><published>2004-06-07T01:00:00Z</published><updated>2004-06-07T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/wired-spotcode</id><summary type="html"><p>I gave a talk at <a href="https://web.archive.org/web/20050204012820/http://www.quernstone.com/notcon04/">NotCon 2004</a> on SpotCodes, and it got covered in Wired Magazine!Of course, I shared the stage with a man telling the time <a href="https://www.wired.com/2004/06/from-the-prawn-of-time/">via a prawn sandwich</a>, so the limelight wasn't all just mine...</p><p>Anil Madhavapeddy and his colleagues at High Energy Magic think camera phones should be used for more than taking bad pictures. The company's SpotCode reader software lets camera phones recognize a circular tag and then communicate via Bluetooth with a local server.<cite>-- <a href="https://roxannekhamsi.com">Roxanne Khamsi</a> for <a href="https://www.wired.com/2004/06/from-the-prawn-of-time/">Wired</a></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Cellphone as a virtual mouse/keyboard</title><link href="https://anil.recoil.org/notes/hem" rel="alternate"></link><published>2004-05-27T01:00:00Z</published><updated>2004-05-27T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/hem</id><summary type="html"><p>The <a href="https://anil.recoil.org/projects/ubiqinteraction">SpotCode</a> cellphone software was spun out into a startup called High Energy Magic Ltd, and was covered on Slashdot.</p><p>Check this out! High Energy Magic have announced a public beta of software to let you use your camera-phone as a physical mouse by just pointing and clicking and rotating it in the air.</p><p>There were also articles on <a href="https://web.archive.org/web/20060505171702/http://www.linuxdevices.com/news/NS3157166681.html">DeviceForge</a> that were picked up by quite a few outlets.</p>+<p><em>Update: You can see some of the videos under <a href="https://anil.recoil.org/projects/ubiqinteraction">Ubiquitous Interaction Devices</a> as well.</em></p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Context-Aware Computing with Sound</title><link href="https://anil.recoil.org/news/audio-networking-1" rel="alternate"></link><published>2003-10-01T01:00:00Z</published><updated>2003-10-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/audio-networking-1</id><summary type="html"><p>While working as an intern at Intel Research Cambridge, <a class="contact" href="https://github.com/djs55">Dave Scott</a> and <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a> and I put together a fun system based on the emerging new class of smartphones. The project kicked off when we randomly experimented with our fancy Nokia smartphones and discovered that they didn't have anti-aliasing filters on the microphones! We argued that</p><p>[...] audio networking can be used as the basis for developing context-aware applications. Audio networking allows standard devices fitted with speakers and microphones (e.g. PDAs, laptops, desktop PCs and mobile phones) to exchange data and infer information about their environment. One of the key advantages of audio networking is that it enables context-aware applications to be immediately deployed on a large scale without requiring users to purchase and install additional hardware. <span class="morewords">[…<a href="https://anil.recoil.org/news/audio-networking-1">178 words</a>]</span></p>···&nbsp; <a href="https://anil.recoil.org/papers/audio-networking.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>My static C bounds checker extension merged into OpenBSD</title><link href="https://anil.recoil.org/notes/gcc-bounds" rel="alternate"></link><published>2003-06-27T01:00:00Z</published><updated>2003-06-27T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/gcc-bounds</id><summary type="html"><p>After many rounds of review and helpful feedback from fellow developers,I merged my <a href="https://man.openbsd.org/gcc-local.1">GCC static bounds checking extension</a> into OpenBSD today!</p>···+<p>You can read more details in the <a href="https://man.openbsd.org/gcc-local.1"><em>gcc-local(1)</em></a> manual page as well.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>The Case for Abstracting Security Policies</title><link href="https://anil.recoil.org/news/sam03-secpol-1" rel="alternate"></link><published>2003-06-01T01:00:00Z</published><updated>2003-06-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/sam03-secpol-1</id><summary type="html"><p>My first ever academic paper, written with the expert guidance of <a class="contact" href="https://www.cl.cam.ac.uk/~am21/">Alan Mycroft</a> and my PhD colleagues <a class="contact" href="https://github.com/djs55">Dave Scott</a> and <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a>! We worked on a system call policy language to help constrain application access to privileged resources, and implemented this on OpenBSD using <a href="https://man.openbsd.org/OpenBSD-5.1/systrace.1">systrace</a>. The paper describing the declarative language was presented at SAM 2003 in Las Vegas.</p>···&nbsp; <a href="https://anil.recoil.org/papers/sam03-secpol.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Moving to anil.recoil.org</title><link href="https://anil.recoil.org/notes/opening-anil-recoil-org" rel="alternate"></link><published>2003-05-16T01:00:00Z</published><updated>2003-05-16T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/opening-anil-recoil-org</id><summary type="html"><p>I've taken the opportunity to redesign my homepage and switch to its hopefully-permanentURL on <code>anil.recoil.org</code>. Many thanks to Jon Parise for giving me permission to base my+HTML upon his homepage's, saving me lots of design trouble!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Xen 2002</title><link href="https://anil.recoil.org/news/xen02-1" rel="alternate"></link><published>2003-01-04T00:00:00Z</published><updated>2003-01-04T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/xen02-1</id><summary type="html"><p>The first technical report on the <a href="https://anil.recoil.org/projects/xen">Xen Hypervisor</a> hypervisor is now available. I mainly contributed to the early NetBSD port (but have run into a snag with the lack of linear page tables in our paravirtual page implementation).</p>···+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Ubiquitous Interaction Devices</title><link href="https://anil.recoil.org/projects/ubiqinteraction" rel="alternate"></link><published>2003-01-01T00:00:00Z</published><updated>2003-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/ubiqinteraction</id><summary type="html"><div><p><p>I investigated how to interface the new emerging class of smartphone devices···<p>In around 2005, we sold High Energy Magic Ltd. to a <a href="https://www.youtube.com/watch?v=sN01wkRzsfk">Dutch entrepreneur</a> so that <a class="contact" href="mailto:richard.sharp@gmail.com">Richard Sharp</a>, <a class="contact" href="https://github.com/djs55">Dave Scott</a> and I could join the <a href="https://anil.recoil.org/projects/xen">Xen Hypervisor</a> startup company. However, the ubiquitous computing ideals that drove much of our work continue to persist, and in 2018 I started thinking about this again as part of my <a href="https://anil.recoil.org/projects/osmose">Interspatial OS</a> project. The idea of building truely ubiquitous environments (without smartphones) is resurrected again there, and you can start reading about it in <a href="https://anil.recoil.org/papers/2018-hotpost-osmose">An architecture for interspatial communication</a>.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Functional Internet Services</title><link href="https://anil.recoil.org/projects/melange" rel="alternate"></link><published>2003-01-01T00:00:00Z</published><updated>2003-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/melange</id><summary type="html"><div><p><p>My PhD dissertation work proposed an architecture for constructing new implementations of standard Internet protocols with integrated formal methods such as model checking and functional programming that were then not used in deployed servers. A more informal summary is &quot;rewrite all the things in OCaml from C!&quot;, which lead to a merry adventure into implementing many networks protocols from scratch in a functional style, and learning lots about how to enforce specifications without using a full blown proof assistant.</p>···+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Started PhD at Cambridge</title><link href="https://anil.recoil.org/notes/starting-phd" rel="alternate"></link><published>2002-09-01T01:00:00Z</published><updated>2002-09-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/starting-phd</id><summary type="html"><p>I started my PhD at the Systems Research Group in Cambridge this week, based inthe <a href="https://www.cl.cam.ac.uk">Computer Laboratory</a> and <a href="https://robinson.cam.ac.uk">Robinson<a href="https://netapp.com">NetApp</a>, but my primary focus will be on the <a href="https://anil.recoil.org/projects/xen">Xen</a>+hypervisor and other systems research topics.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Streamlining PHP on OpenBSD</title><link href="https://anil.recoil.org/notes/php-port-layout-openbsd" rel="alternate"></link><published>2002-06-24T01:00:00Z</published><updated>2002-06-24T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/php-port-layout-openbsd</id><summary type="html"><p>I've committed a big improvement to the PHP port on OpenBSD, by switching from a complex set of FLAVOR tags over to a set of independently installing &quot;multi packages&quot;.</p>···+<p>This should make the use of <code>pkg_add</code> for PHP much simpler for new users. Any problems, please file a bug report or let me know.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Streaming U2 live across the Internet</title><link href="https://anil.recoil.org/news/netapp-tr-3152-1" rel="alternate"></link><published>2002-04-01T01:00:00Z</published><updated>2002-04-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/netapp-tr-3152-1</id><summary type="html"><p>After the <a href="https://anil.recoil.org/notes/mars-polar-lander">Mars Polar Lander crashed</a>, I took a job at NetApp working as theproduct architect for <a href="https://en.wikipedia.org/wiki/NetCache">NetCache</a>. Among the hundreds···&nbsp; <a href="https://anil.recoil.org/papers/netapp-tr-3152.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Xen Hypervisor</title><link href="https://anil.recoil.org/projects/xen" rel="alternate"></link><published>2002-01-01T00:00:00Z</published><updated>2002-01-01T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/projects/xen</id><summary type="html"><div><p><p>I was on the original team at Cambridge that built the Xen hypervisor in 2002-- the first open-source &quot;type-1&quot; hypervisor that ushered in the age of cloud···at RISC-V architectures and embedded systems again as part of <a href="https://anil.recoil.org/projects/osmose">Interspatial OS</a>.</p>+</div></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Added a caching subsystem to Horde</title><link href="https://anil.recoil.org/notes/horde-cache" rel="alternate"></link><published>2001-08-20T01:00:00Z</published><updated>2001-08-20T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/horde-cache</id><summary type="html"><p>While hacking on making Chora performant enough to work as the official PHP CVS web-viewer, I added in a general caching subsystem into the Horde PHP framework. Do let me know if you end up finding a use for it in your own applications.</p>···<p><cite> -- <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20010820/003116.html">Anil Madhavapeddy</a></cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Chora now the production CVS viewer for PHP</title><link href="https://anil.recoil.org/notes/chora-live-on-php" rel="alternate"></link><published>2001-08-05T01:00:00Z</published><updated>2001-08-05T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/chora-live-on-php</id><summary type="html"><p>I spent a chunk of time through the year working on the <a href="https://horde.org">Horde</a> project. I began when I got commit to <a href="https://www.horde.org/apps/imp/">IMP webmail</a> to fix some bugs in the MIME rendering for our Recoil deployment. You can see my code commits on the <a href="https://marc.info/?a=97359997900001&amp;r=6">horde-cvs</a> mailing list archive.</p><p>After getting to grips with the PHP code, I then went on to totally rewrite the <a href="https://www.horde.org/apps/chora/">Chora</a> version control viewer so that the CVS repositories for Horde could be browsed online instead of only via the command line.</p><p>I'm extremely proud to report that the <a href="http://php.net">PHP project</a> has <a href="https://lists.horde.org/archives/dev/Week-of-Mon-20010806/002886.html">now deployed Chora</a> for production use to serve up <code>cvs.php.net</code>, making it our biggest user by far. Thanks for making my day, Rasmus!</p>···<cite> -- <a href="https://lists.horde.org/archives/dev/Week-of-Mon-20010806/002886.html">Rasmus Lerdorf</a>, php.net</cite></p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Added internationalisation to the Chora viewer</title><link href="https://anil.recoil.org/notes/chora-internationalised" rel="alternate"></link><published>2001-08-03T01:00:00Z</published><updated>2001-08-03T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/chora-internationalised</id><summary type="html"><p>One of the coolest things about hacking on the <a href="https://horde.org">Horde</a> framework is that it gives me lots of features for free that I can use in my web applications. The latest thing I added to the Chora CVS viewer today is the internationalisation framework, so that the frontend can be translated to multiple languages.</p>+<p>I've added in a simple <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20010730/002975.html">German translation</a> to start with, but please contribute your own strings if you get the opportunity.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>GPL release of OpenFX</title><link href="https://anil.recoil.org/notes/openfx" rel="alternate"></link><published>2001-02-10T00:00:00Z</published><updated>2001-02-10T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/openfx</id><summary type="html"><p>Slashdot covers the GPL release of <a href="http://openfx.org">OpenFX</a>, which I worked on with Stuart Ferguson (my brother's PhD supervisor in Queen's University Belfast).</p><p>It has a renderer and raytrace engine, NURBS support, kinematics-based animation, morphing, a plugin API - and it's under the GPL. Currently only for Windows, but they're working on a Linux and FreeBSD port.</p>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I am now a core PHP developer</title><link href="https://anil.recoil.org/notes/commit-access-to-php" rel="alternate"></link><published>2001-01-09T00:00:00Z</published><updated>2001-01-09T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/commit-access-to-php</id><summary type="html"><p>I've been maintaining <a href="http://php.net">PHP</a> on OpenBSD for a while now, including the core package distributed as binary packages.</p>+<p>So as of today, the core team has decided I'm trustworthy enough to have my own commit bit to the central PHP repository, where I can commit code fixes and also maintain the <a href="https://www.php.net/manual/en/install.unix.openbsd.php">OpenBSD on PHP</a> official instructions. You can contact me on <code>avsm@php.net</code> if you need any help!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I'm now an OpenBSD developer</title><link href="https://anil.recoil.org/notes/openbsd-developer" rel="alternate"></link><published>2000-12-26T00:00:00Z</published><updated>2000-12-26T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/openbsd-developer</id><summary type="html"><p>I've been using OpenBSD for a few years now as the primary OS for <a href="https://anil.recoil.org/news?t=recoil">recoil</a>···+<p>Many thanks to Jakob for the help with getting started, and for ok'ing my first commit.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>I'm now a Horde core team member</title><link href="https://anil.recoil.org/notes/horde-developer" rel="alternate"></link><published>2000-10-16T01:00:00Z</published><updated>2000-10-16T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/horde-developer</id><summary type="html"><p>After contributing some patches, I've now got the honour of becoming a <a href="https://www.horde.org/community/team">core team</a> member of the <a href="https://horde.org">Horde</a> project. Many thanks to Chuck Hagenbuch and Jon Parise for their trust in me!</p>+<p>I'm planning on fixing bugs in IMP and the webmail subsystem, and am getting interested in version control and CVS as well, so I'm going to look at Whups and Chora ore. You can follow my commits on the <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20001016/author.html">Horde-CVS</a> commit archives, where I am <code>avsm@horde.org</code>!</p></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Paper on the NASA Mars Polar Lander website architecture</title><link href="https://anil.recoil.org/news/netapp-tr-3071-1" rel="alternate"></link><published>2000-07-01T01:00:00Z</published><updated>2000-07-01T01:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/news/netapp-tr-3071-1</id><summary type="html"><p>Although the Mars Polar Lander ended up <a href="https://en.wikipedia.org/wiki/Mars_Polar_Lander#See_also">crashing</a>, the website itself was one of the busiest websites in the world at the time during the approach to the landing. I was the person handling the website architecture and the amazing <code>webmaster@mars.nasa.gov</code> account at the time. I worked closely <a href="https://anil.recoil.org/notes/mars-polar-lander">with Sun</a> and NetApp and wrote up a technical report on how the Mars Polar Lander website acceleration architecture worked.</p>···&nbsp; <a href="https://anil.recoil.org/papers/netapp-tr-3071.pdf"><span class="nobreak">PDF<img alt="pdf" class="inline-icon" src="https://anil.recoil.org/assets/pdf.svg" /></span></a>+</blockquote></summary><category term="Anil Madhavapeddy's feed"></category></entry><entry><title>Slashdot covers the Mars Polar Lander</title><link href="https://anil.recoil.org/notes/mars-polar-lander" rel="alternate"></link><published>1999-12-03T00:00:00Z</published><updated>1999-12-03T00:00:00Z</updated><author><name>Anil<</name></author><id>https://anil.recoil.org/notes/mars-polar-lander</id><summary type="html"><p>In my capacity as <a href="https://anil.recoil.org/papers/netapp-tr-3071">webmaster</a> of the Mars Polar Lander, I submitted a note to Slashdot. Although our amazing distributed website took quite a beating (with some estimated 1 in 4 Internet users trying to access it simultaneously), the Lander itself <a href="https://www.wired.com/1999/12/mars-lander-wont-phone-home/">sadly crashed</a>. On the bright side, I got mentioned in a <a href="https://web.archive.org/web/20020106163651/http://www.sun.com/smi/Press/sunflash/1999-12/sunflash.991202.1.html">Sun press release</a> because of the Sun Netra T1 servers they gave us to host the website!</p><p>You can read more about the architecture behind the site in &quot;<a href="https://anil.recoil.org/papers/netapp-tr-3071">Application of a Distributed Web Site Acceleration: Mars Polar Lander</a>&quot;.</p></summary><category term="Anil Madhavapeddy's feed"></category></entry></feed>
+13
-13
mapping.json
+13
-13
mapping.json
···
···