Atomic EEGhttps://example.com/2025-04-11T18:19:28ZFeed AggregatorAggregated Atom feedsTowards Global-scale Species Distribution Modelling2025-04-11T18:19:28Z2025-04-11T18:19:28ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/7aqBd2Nn9E6QpMvnoBPxuQAbstract: Estimating the geographical range of a species from sparse observations is a challenging and important geospatial prediction problem. Given a set of locations where a species has been observed, the goal is to build a model to predict whether the species is present or absent at any location. This problem has a long history in ecology, but traditional methods struggle to take advantage of emerging large-scale crowdsourced datasets which can include tens of millions of observations of hundreds of thousands of species in addition to the availability of multi-modal data sources such as paired images and natural language descriptions. In this talk, I will present recent work from my group where we have developed deep learning-based solutions for estimating species' ranges from sparse...Dell R640 installation2025-04-10T01:00:00Z2025-04-10T01:00:00ZMarkEhttps://www.tunbury.org/dell-r640-installationToday we have racked the five 14th generation Dell R640 servers and a Dell N4032 switch. When inspecting the rack rails, I noticed that some of the left-hand rails had an extra tab on them while the others did not. For the first server, I used a rail with a tab only to discover that the tab prohibited the server from being pushed in all the way. The tabs were easily removed but the server needed to be removed from the rack first. First server installed The last server on the rails Front view Rear view Cabling Yellow CAT5 for iDRAC ports Red CAT6 for 10GBase-T The initial iDRAC configuration was carried out using a crash cart. The servers are called: myrina thalestris lampedo otrera antiope We had some difficulty with the 40G uplink from the switch and we could only get the link to come up...Weeknotes 2025-W152025-04-09T13:53:56Z2025-04-09T13:53:56ZJonShttps://www.jonmsterling.com/2025-W15/I have a lot to say this week, so strap in. <a href="https://www.forester-notes.org/jms-011P/" target="_blank">Forester 5.0</a> development: canonical URLs, atom feeds, and LSP Work on <a href="https://www.forester-notes.org/jms-011P/" target="_blank">Forester 5.0</a> proceeds apace, generously supported by <a href="https://www.jonmsterling.com/jms-00XB/" target="_blank">ARIA</a> who have engaged <a href="https://www.jonmsterling.com/kentookura/" target="_blank">Kento Okura</a> and myself on a consulting basis to support their internal use of Forester. My recent goals have been to bring Forester closer in line with the architecture of the World Wide Web; to that end, I have made two big improvements. First cut at canonical URLs Trees are addressed by “canonical URLs” that are meant to be the place where they will ultimately be published. See <a href="https://www.forester-notes.org/JVIT/" target="_blank">my blog post</a> on the design for more details. Canonical URLs are of the form https://www.my-host.net/tree-name/ ; the handling is a little fragile right now and you can expect bugs (but please write to me about them). First cut...Coping and Capping2025-04-08T01:00:00Z2025-04-08T01:00:00ZRichardMhttps://mort.io/blog/coping-and-capping/Well that was fun! Quite high up there in the set of things that I never even considered I might do would’ve been awarding degrees. But by dint of being President and thus standing in for <a href="https://en.wikipedia.org/wiki/Simon_McDonald%2C_Baron_McDonald_of_Salford" target="_blank">Simon</a> , on Saturday I did exactly that. The University held a Congregation for those being admitted to the <a href="https://www.cambridgestudents.cam.ac.uk/your-course/graduation-and-what-next/cambridge-ma" target="_blank">Cambridge
MA</a> (“Magistri in Artibus” – Master of Arts). Degrees are conferred by the Chancellor, Vice-Chancellor or nominated deputy. Apparently, typically, for this one and the main undergraduate congregation in July, that nominated deputy Vice-Chancellor is usually the Head of House for the College concerned. In this case, as President at Christ’s is effectively deputy Master (~ Head of House), it me. So instead of the usual Batman-style black gown, I got to wear the rather natty Superman-style...Weeknotes: 7th April 20252025-04-07T10:07:12Z2025-04-07T10:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-04-07/Last Week Talking to new team members We welcomed <a href="https://www.tunbury.org/" target="_blank">Mark</a> , <a href="https://www.dra27.uk/blog/" target="_blank">David</a> , and <a href="https://www.cst.cam.ac.uk/people/jjl25" target="_blank">Jon</a> to the group recently, and I finally found time to sit down and have some 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. Life A wise robot once said: Life! Don't talk to me about life. And I've held a certain amount of sympathy for that view of late, it has to be said, as I've been fighting with the <a href="https://github.com/quantifyearth/life/" target="_blank">LIFE pipeline</a> as I try to run some new high-resolution maps for parts of the globe. This week has been plagued by what I felt was reasonable decision the...Box API with OCaml and Claude2025-04-07T01:00:00Z2025-04-07T01:00:00ZMarkEhttps://www.tunbury.org/ocaml-claude-boxOver the weekend, I decided to extend my <a href="https://box.com" target="_blank">Box</a> <a href="https://github.com/mtelvers/ocaml-box-diff" target="_blank">tool</a> to incorporate file upload. There is a straightforward POST API for this with a curl one-liner given in the Box <a href="https://developer.box.com/reference/post-files-content/" target="_blank">documentation</a> . Easy. The documentation for <a href="https://mirage.github.io/ocaml-cohttp/cohttp-eio/Cohttp_eio/Client/index.html" target="_blank">Cohttp-eio.Client</a> only gives the function signature for post , but it looked pretty similar to get , which I had already been working with. The <a href="https://github.com/mirage/ocaml-cohttp" target="_blank">README</a> for Cohttp gave me pause when I read this comment about multipart forms. Multipart form data is not supported out of the box but is provided by external libraries Of the three options given, the second option looked abandoned, while the third said it didn’t support streaming, so I went with the first one <a href="https://github.com/dinosaure/multipart_form" target="_blank">dionsaure/multipart_form</a> . The landing page included an example encoder. A couple of external functions are mentioned, and I found example code...2025-04-06 Weekly Notes2025-04-06T01:00:00Z2025-04-06T01:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/04/06/weekly-notesAs 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...Semi distributed filesystems with ZFS and Sanoid2025-04-05T01:00:00Z2025-04-05T01:00:00ZAnilMhttps://anil.recoil.org/notes/syncoid-sanoid-zfsOver in my <a href="https://www.cst.cam.ac.uk/research/eeg" target="_blank">EEG</a> group, we have a lot of primary and secondary datasets lying around: 100s of terabytes of <a href="https://anil.recoil.org/projects/rsn" target="_blank">satellite imagery</a> , <a href="https://anil.recoil.org/projects/life" target="_blank">biodiversity data</a> , <a href="https://anil.recoil.org/projects/ce" target="_blank">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" target="_blank">TrueNAS</a> stores data in <a href="https://en.wikipedia.org/wiki/ZFS" target="_blank">ZFS</a> and serves it over <a href="https://en.wikipedia.org/wiki/Network_File_System" target="_blank">NFSv4</a> to a bunch of hosts. This is rapidly becoming a bottleneck as our group and datasets grow, and <a href="https://tarides.com/blog/author/mark-elvers/" target="_blank">Mark Elvers</a> has been steadily adding <a href="https://www.tunbury.org/kingston-drives/" target="_blank">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. Why get rid of NFS? The first design constraint is to get rid of centralised network storage. This is both slow when compared to a modern...Rewarding influence2025-04-05T01:00:00Z2025-04-05T01:00:00ZRichardMhttps://mort.io/blog/happy-day/<a href="https://2025.eurosys.org/index.html" target="_blank">EuroSys 2025</a> was co-located with <a href="https://www.asplos-conference.org/asplos2025/" target="_blank">ASPLOS
2025</a> this year. Other commitments meant I (again) couldn’t stay for the whole conference, attending primarily because <a href="https://mort.io/blog/tdis-accepted" target="_blank">two students had papers in the TDIS
workshop</a> . But happily I was able to stay for the first day of the conference – “happily” not only because it gave me a chance to catch up with some old friends I hadn’t seen in a decade or more, but also because <a href="https://doi.org/10.1145/2451116.2451167" target="_blank">the Mirage unikernels
paper</a> which appeared at <a href="http://asplos13.rice.edu/" target="_blank">ASPLOS
2013</a> won one of two <a href="https://www.asplos-conference.org/asplos2025/awards/" target="_blank">ASPLOS 2025 Influential Papers
awards</a> :) This is obviously very flattering – typically doing research is necessarily its own reward because the work can seem fruitless much of the time. Even when a paper gets written and submitted it will most likely be rejected – I think EuroSys this year reported something like a 12% acceptance rate, so rejection is a priori the most likely outcome. Finally, if...opam repo ci job timeouts2025-04-04T01:00:00Z2025-04-04T01:00:00ZMarkEhttps://www.tunbury.org/opam-repo-ciIt’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" target="_blank">ocurrent/ocaml-version</a> <a href="https://www.tunbury.org/recent-ocaml-version/" target="_blank">noted</a> on 24th March. The <a href="https://opam.ci.ocaml.org/github/ocaml/opam-repository" target="_blank">opam repo ci</a> tests all PRs on <a href="https://github.com/ocaml/opam-repository" target="_blank">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" target="_blank">base image builder</a> . <a href="https://github.com/ocurrent/docker-base-images/pull/317" target="_blank">PR#317</a> update these base images in three ways: Images for OCaml < 4.08 were removed. The opam-repository-archive overlay was removed as this contained the < 4.08 opam packages. The ocaml-patches-overlay overlay was removed as this was only needed to build OCaml < 4.08 on GCC 14. Given these...2nd Programming for the Planet workshop CFP out2025-04-03T01:00:00Z2025-04-03T01:00:00ZAnilMhttps://anil.recoil.org/notes/propl-at-splash<a href="https://dorchard.github.io" target="_blank">Dominic Orchard</a> and I had a blast <a href="https://plas4sci.github.io/conference/2024/01/22/propl.html" target="_blank">running</a> the first <a href="https://propl.dev" target="_blank">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/" target="_blank">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" target="_blank">second outing</a> in October, co-located with <a href="https://icfp25.sigplan.org/" target="_blank">ICFP</a> /SPLASH in Singapore in October. Read the <a href="https://conf.researchr.org/home/icfp-splash-2025/propl-2025#Call-for-Papers" target="_blank">call for papers</a> here (deadline 3rd July 2025). Dominic prepping for the first PROPL in the rather delightful venue We'd love to get wider participation in computer science interacting with matters of climate and biodiversity: There are simultaneous interlinked crises across the planet due to human actions: climate change, biodiversity loss, and desertification. Addressing these challenges requires, amongst other things, a global understanding...Everything is a file; except when it’s not2025-04-03T01:00:00Z2025-04-03T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2025/04/03/cloexecSome titles make more sense than others. One of my oldest contributions to OCaml was a complete overhaul of <a href="https://ocaml.org/p/ocaml-base-compiler/5.2.1/doc/Unix/index.html#file-status" target="_blank">Unix.stat et al</a> in <a href="https://github.com/ocaml/ocaml/pull/462" target="_blank">ocaml/ocaml#462</a> which formed part of OCaml 4.03. As part of the work on <a href="https://ocaml.org/p/msvs-detect/latest" target="_blank">msvs-detect</a> in late 2015, I’d ended up with a Windows 7 VM which had every single version of Visual Studio back to <a href="https://en.wikipedia.org/wiki/Visual_Studio#6.0_(1998)" target="_blank">Visual Studio 6.0</a> . Visual Studio (and Visual C++ before that) has always included the source code for the C Runtime Library (CRT), and as a side-effect of having all these installed Visual Studios, I was able to construct a Git repository showing the evolution of the CRT code over each release (sadly, the licence doesn’t allow this to be pushed publicly). This was particularly useful for studying how the behaviour of the stat implementation had changed over time, particularly with reference to...More Kingston Drives2025-04-03T01:00:00Z2025-04-03T01:00:00ZMarkEhttps://www.tunbury.org/kingston-drivesWe have received the second batch of 40 x 7.68TB Kingston SSD drives, bringing the total to 50 drives. We now have 5 fully populated Dell PowerEdge R640 with a total raw capacity of 384TB.Ubuntu with ZFS root2025-04-02T01:00:00Z2025-04-02T01:00:00ZMarkEhttps://www.tunbury.org/ubuntu-with-zfs-rootThe installation of <a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2022.04%20Root%20on%20ZFS.html" target="_blank">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. To test my script, I have created a new VM on VMware ESXi with 10 x 16GB disks, 16GB RAM, 4 vCPU. In the advanced options, I have set the boot to EFI and set disk.EnableUUID = "TRUE" in the .vmx file. Doing this ensures that /dev/disk aliases are created in the guest. Boot Ubuntu 24.04 from the Live CD and install SSH. sudo -i apt update apt install openssh-server -y Use wget to download https://github.com/mtelvers.keys into ~/.ssh/authorized_keys . wget https://github.com/mtelvers.keys -O ~/.ssh/authorized_keys In your Ansible hosts file, add your new machine and its IP address your.fqdn ansible_host=<ip> Run the...Updating Docker and Go2025-04-01T01:00:00Z2025-04-01T01:00:00ZMarkEhttps://www.tunbury.org/go-dockerFor some time, we have had issues on Ubuntu Noble when extracting tar files within Docker containers. See <a href="https://github.com/ocaml/infrastructure/issues/121" target="_blank">ocaml/infrastructure#121</a> . This is only an issue on exotic architectures like RISCV and PPC64LE. # docker run --rm -it ubuntu:noble root@cf3491db4abd:/# cd root@cf3491db4abd:~# mkdir foo root@cf3491db4abd:~# tar -cf bar.tar foo root@cf3491db4abd:~# rmdir foo root@cf3491db4abd:~# tar -xf bar.tar tar : foo: Cannot change mode to rwxr-xr-x: Operation not permitted tar : Exiting with failure status due to previous errors The combination of Docker version and libseccomp2 version prevents the container from running the fchmodat2 system call. There is a bug report on Ubuntu’s bug tracker for the issue. I have been working around this by building Docker from scratch. apt install golang git clone...Weeknotes: 31th March 20252025-03-31T10:07:12Z2025-03-31T10:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-03-31/Last Week I was still coming off the back of being unwell the previous week, so not the most productive week STAR I got the full <a href="https://iucn.org/resources/conservation-tool/species-threat-abatement-and-restoration-star-metric" target="_blank">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. LIFE I started to process a bunch of high-resolution data I've been given for brazil to make an application specific version of the <a href="https://www.sei.org/publications/life-metric-mapping-global-extinctions/" target="_blank">LIFE metric</a> . My intent had been to try and code something to make it more efficient to work with a mix of high and low resolution maps, rather than doing a...Shelter, Hazel and More!2025-03-31T01:00:00Z2025-03-31T01:00:00ZPatrickFhttps://patrick.sirref.org/weekly-2025-03-31/Last week I focused on <a href="https://patrick.sirref.org/shelter/" target="_blank">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. Shelter Prototype Shelter is a spin-off from the work <a href="https://patrick.sirref.org/mdales/" target="_blank">Michael</a> and I started with <a href="https://github.com/quantifyearth/shark" target="_blank">Shark</a> . It takes the same ideas but applies them directly to a shell-like interface. We're still in the middle of working all of this, but you can read more about it at <a href="https://patrick.sirref.org/shelter/" target="_blank">Shelter</a> . Forester Hacking As you can probably tell, my website is still using <a href="https://patrick.sirref.org/forester/" target="_blank">Forester</a> . I rebased my Markdown branch to include the new Atom syndication feature. Alongside that I added support for arbitrary HTML injection into Forester via codeblocks in Markdown. This was actually very straightforward thanks to <a href="https://ocaml.org/p/markup" target="_blank">Markup</a> and being able to...Installation order for opam packages2025-03-31T01:00:00Z2025-03-31T01:00:00ZMarkEhttps://www.tunbury.org/opam-post-depsPreviously, I discussed the installation order for a simple directed acyclic graph without any cycles. However, opam packages include post dependencies. Rather than package A depending upon B where B would be installed first, post dependencies require X to be installed after Y. The post 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 post dependencies. Here is the graph of <a href="https://www.tunbury.org/images/0install.2.18-with-post-with-colour.pdf" target="_blank">0install</a> with post dependencies coloured in red. Removing the post dependencies gives an unsatisfying graph with orphaned dependencies. <a href="https://www.tunbury.org/images/0install.2.18-without-post.pdf" target="_blank">0install without post</a> . Note base-nnp.base and base-effects.base . However, this...2025-03-30 Weekly Notes2025-03-30T00:00:00Z2025-03-30T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/03/30/weekly-notesThe 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. In my meeting with <a href="https://anil.recoil.org/" target="_blank">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...Not one but two accepted papers and a Ph.D.2025-03-30T00:00:00Z2025-03-30T00:00:00ZRichardMhttps://mort.io/blog/tdis-accepted/As I find myself once more on a train to parts unknown (to me at least), a brief update :) The parts unknown in question is Rotterdam, NL (so really quite well-known to quite a lot of people, just not me) for <a href="https://2025.eurosys.org/" target="_blank">EURO/SYS
2025</a> (being held jointly with <a href="https://www.asplos-conference.org/asplos2025" target="_blank">ASPLOS
2025</a> , although I can’t stay for the whole thing unfortunately) and specifically the <a href="https://tdis.gitlab.io/tdis25/" target="_blank">3rd International Workshop
of Testing Distributed Internet of Things Systems
(TDIS)</a> . Why? Happily the programme committee decided to accept two papers from my (ex-)students – which is nice :) The two in question are <a href="https://doi.org/10.1145/3719159.3721222" target="_blank">Reckon-ing Kubernetes at the Edge using Emulated
Clusters</a> with Alessandro Sassi (University of Cambridge / Politecnico di Milano) and Christopher Jensen (University of Cambridge / Microsoft Research). This describes Alessandro’s M.Sc. research project undertaken as a visitor with my group. He built on Chris’ earlier work on <a href="https://doi.org/10.1145/3447851.3458739" target="_blank">Reckon, an emulator setup for examining consensus
system behaviour</a> . Alessandor extended this to...Box Diff Tool2025-03-30T00:00:00Z2025-03-30T00:00:00ZMarkEhttps://www.tunbury.org/box-diffBox 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/" target="_blank">API</a> , but I only need the <a href="https://developer.box.com/reference/get-folders-id-items/" target="_blank">list items in folder</a> call. 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 foo in a folder tree a/b/c/foo , we need to call the API with folder ID 0. This returns a list of entries in that folder. e.g. { "entries" : [ { "id" : "12345" , "type" : "folder" , "name" : "a" } ] } The API must now be called again with the new ID number to get the contents of folder a . This is repeated until we finally have the entries for folder c which would contain the file itself. I...Blockchain-Based Carbon Trading for Stakeholders in Brazil2025-03-28T17:09:11Z2025-03-28T17:09:11ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/f1Uxw34FRLEfVNBBpzbsgDFull Title: Democratizing Carbon Markets: A Blockchain-Based Emission Trading System for Small and Large-Scale Stakeholders in Brazil Abstract: The integration of blockchain technology into carbon markets offers a unique opportunity to create more transparent, inclusive, and efficient trading mechanisms. This presentation introduces a novel Blockchain Emission Trading System (BETS) model designed to align with Brazil’s new carbon market legislation (Law 15042/2024), ensuring that both large landholders and small rural producers can participate fairly. Our approach leverages official land registries, such as SICAR, to create spatially and temporally verifiable carbon credits, preventing fraud and double counting while enabling greater accessibility for smaller stakeholders who often...New preprint on benchmarking ultra-low power neural accelerators2025-03-28T00:00:00Z2025-03-28T00:00:00ZAnilMhttps://anil.recoil.org/news/2025-npu-bench-1<a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">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" target="_blank">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" target="_blank">ESP32</a> -based boards over to <a href="https://arm.com" target="_blank">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. <a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> , <a href="https://yushan-huang.github.io/" target="_blank">Yushan Huang</a> , <a href="https://www.imperial.ac.uk/people/sarab.sethi" target="_blank">Sarab Sethi</a> , <a href="https://haddadi.github.io/" target="_blank">Hamed Haddadi</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="http://arxiv.org/abs/2503.22567" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/2503.22567" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2503.22567" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2025-npu-bench.bib" target="_blank">BIB</a>...OCaml Core Dev Meeting2025-03-28T00:00:00Z2025-03-28T00:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2025/03/28/ocaml-dev-meetingOCaml Core Dev meeting at <a href="https://inria.fr" target="_blank">Inria</a> yesterday. These are roughly biannual synchronous catchups which provide a chance to find out what others are up to, get feedback on any major ongoing work, and attempt to unblock some stalled PRs. Sometimes tempers get frayed, but not this time round… Quick round-table: ongoing work to get modular explicits/implicits into OCaml; a lot of work on GC pacing to get the 5.x GC to follow its space overhead setting properly; lot of work on flambda 2; OCaml Language committee has been launched and has two proposals under consideration; quite a lot of reviewing of new features from Jane Street in flight; work on pluggable GC to be able to try out alternate GCs in the main runtime. Two presentations on the table. The OCaml 5.x GC isn’t working hard enough to...Dell PowerEdge R640 Storage Server2025-03-27T00:00:00Z2025-03-27T00:00:00ZMarkEhttps://www.tunbury.org/dell-poweredge-r640We 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. The first job was to mount each of the drives in a caddy. And then install them in the server. These R640 servers are equipped with the Dell PERC H740P RAID controller. They support either hardware RAID 0,1,5,10,50 etc or Enhanced HBA mode. In eHBA mode, the disks operate in a passthrough mode, presenting the raw disks to the OS, however each disk needs to be specifically selected in an additional step after enabling eHBA mode. In RAID mode, one or more virtual disks need to be created to present the disks to the OS. Preconfigured profiles are available to complete this step easily. We will run these with a ZFS file system,...How This Site Is Build2025-03-26T00:00:00Z2025-03-26T00:00:00ZRyanGhttps://ryan.freumh.org/how-this-site-is-built.htmlPublished Wed 26 Mar 2025. This site has continuously evolved since I made the first commit while procrastinating my undergrad dissertation, __LINK_0__ commit 632cb1f0c97c07fb99b48192444397e56ea5310f __LINK_1__ Author: Ryan Gibb <redacted> __LINK_2__ Date: Fri Jan 22 11:27:55 2021 +0000 __LINK_3__ __LINK_4__ Initial commit __LINK_5__ __LINK_6__ diff --git a/index.html b/index.html __LINK_7__ new file mode 100644 __LINK_8__ index 0000000..557db03 __LINK_9__ --- /dev/null __LINK_10__ +++ b/index.html __LINK_11__ @@ -0,0 +1 @@ __LINK_12__ +Hello World I started off writing plain HTML, then switching to writing in markdown and using <a href="https://pandoc.org/" target="_blank">pandoc</a> to convert to HTML, and gradually accumulated bash scripts and makefiles to add more functionality, such as generating an <a href="https://www.rfc-editor.org/rfc/rfc4287" target="_blank">Atom feed</a> . This became...FreeBSD 14.2 Upgrade2025-03-26T00:00:00Z2025-03-26T00:00:00ZMarkEhttps://www.tunbury.org/freebsd-14.2CI workers spring and summer run FreeBSD and need to be updated. Check the current version of FreeBSD which we have with uname -r . FreeBSD summer 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64 Run freebsd-update fetch to download the latest versions of the system components, particularly the freebsd-update utility. It even reported that it really is time to upgrade! # freebsd-update fetch ... WARNING: FreeBSD 14.1-RELEASE-p5 is approaching its End-of-Life date. It is strongly recommended that you upgrade to a newer release within the next 5 days. Install these updates. freebsd-update install Now use freebsd-update to fetch the 14.2-RELEASE and install it. # freebsd-update upgrade -r 14.2-RELEASE ... # freebsd-update install src component not installed, skipped Installing...Towards Forester 5.0 II: a design for canonical URLs2025-03-25T13:44:56Z2025-03-25T13:44:56ZJonShttps://www.forester-notes.org/JVIT/One of the goals of <a href="https://www.forester-notes.org/jms-011P/" target="_blank">Forester 5.0</a> is lightweight federation —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/" target="_blank">Towards Forester 5.0: 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. 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...Weeknotes: 24th March 20252025-03-24T09:07:12Z2025-03-24T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-03-24/Last week 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. STAR 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" target="_blank">STAR metric</a> this week. Firstly, my extraction of species from the IUCN Red List database finally aligns with that of the official implementation in R that is built by Chess Ridley at Newcastle University. Chess has been helping me navigate the nuances of the Red List database for the last couple of months as either of us gets time to nudge things forward, and we finally got to parity this week. Secondly, I took a first pass at implementing the post-AoH stages of the STAR pipeline, (see "STAR Calculation" in the Methods section of <a href="https://www.nature.com/articles/s41559-021-01432-0.epdf" target="_blank">the original paper</a> ). This involves weighting all the...Mon 24 Mar 20252025-03-24T00:00:00Z2025-03-24T00:00:00ZRyanGhttps://ryan.freumh.org/2025-03-24.htmlPrevious: <a href="2025-03-17.html" target="_blank">Mon 17 Mar 2025</a> Babel TODO cargo dynamic loading At the moment this loads the whole index at once which takes a long time, so I need to figure out how to make pubgrub_cargo dynamically load packages. TODO add Nix solver Using the same techniques as <a href="https://github.com/RyanGibb/opam-nix-repository" target="_blank">opam-nix-repository</a> TODO polish up babel paper with motivating examples TODO read up on answer set programming <a href="https://pubgrub-rs-guide.pages.dev/internals/intro" target="_blank">https://pubgrub-rs-guide.pages.dev/internals/intro</a> is a good starting point And ‘Conflict-driven answer set solving: From theory to practice’ <a href="#ref-gebserConflictdrivenAnswerSet2012" target="_blank">[1]</a> deployment TODO Nix TODO Docker Research notes Contextualising my research activities to date. TODO Eilean TODO Babel [1] M. Gebser, B. Kaufmann, and T. Schaub, “Conflict-driven answer set solving: From theory to practice,” Artificial Intelligence , vol. 187–188, pp. 52–89, Aug. 2012, doi: <a href="https://doi.org/10.1016/j.artint.2012.04.001" target="_blank">10.1016/j.artint.2012.04.001</a> . [Online]. Available:...2025-03-23 Weekly Notes2025-03-23T00:00:00Z2025-03-23T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/03/23/weekly-notesAfter 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...Global Maps of Human Threats to Biodiversity and Species Extinctions2025-03-21T16:11:39Z2025-03-21T16:11:39ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/3exAV8tLbnPSGqoKv2mZtsFull title: Towards Global Maps of Anthropogenic Threats to Biodiversity and Their Contributions to Species Extinctions Abstract: Species extinctions are primarily driven by loss of habitat, which is relatively easy to monitor by satellite remote sensing; other anthropogenic threats to biodiversity, like hunting, are much more difficult to observe directly. My PhD project draws on local studies which capture the population effect of some anthropogenic threat, scaling these results using machine learning and remote sensing. In this talk, I will discuss my first attempt at this through quantifying species-specific responses to hunting pressure. I find that machine learning methods can offer marked improvements over (linear) statistical models, which are commonly used in ecology, but model...LIFE becomes an Official Statistic of the UK government2025-03-21T00:00:00Z2025-03-21T00:00:00ZAnilMhttps://anil.recoil.org/notes/life-official-statisticOur <a href="https://anil.recoil.org/papers/2024-life" target="_blank">recently published</a> <a href="https://anil.recoil.org/projects/life" target="_blank">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/" target="_blank">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" target="_blank">food provenance data</a> to track the environmental impacts of our consumption habits. I must admit that I'd not heard of "Official Statistics" before this, so I did a bit of research. The UK <a href="https://osr.statisticsauthority.gov.uk/" target="_blank">Office for Statistics Regulation</a> says that: 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. They provide a factual basis for assessment and decisions on economic, social and environmental issues at all levels of society. -- <a href="https://osr.statisticsauthority.gov.uk/policies/official-statistics-policies/" target="_blank">OSR Policies</a> The good folk at the <a href="https://jncc.gov.uk/" target="_blank">Joint Nature Conservation Committee</a> are responsible for this particular statistic. The JNCC launched their...Weeknotes: 17th March 20252025-03-17T09:07:12Z2025-03-17T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-03-17/Förrförra vecka Life maps 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 "pop-science" version generated by <a href="https://qgis.org" target="_blank">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: And the restore scenario map here, which has less change visible, as there is less area to convert: The different colours are from...Mon 17 Mar 20252025-03-17T00:00:00Z2025-03-17T00:00:00ZRyanGhttps://ryan.freumh.org/2025-03-17.htmlPrevious: <a href="2025-03-10.html" target="_blank">Mon 10 Mar 2025</a> Next: <a href="2025-03-24.html" target="_blank">Mon 24 Mar 2025</a> Babel DONE <a href="https://modelcontextprotocol.io/" target="_blank">Model Context Protocol</a> <a href="https://github.com/RyanGibb/babel/commit/ab6dcc162e5eb92192a19a63c33d0efa3db736a9" target="_blank">Added</a> a basic Model Context Protocol server for querying dependencies with Babel, since LLMs seem to be particularly bad at managing dependencies. I need to flesh this out with support for metadata queries and solving for platforms. Once this works we could look at invoking ecosystem tooling to provide the dependencies, and creating a containerisation environment based on the solved platform for system dependencies. ecosystems DONE fix cross-ecosystem version ranges I had to add an abstract BabelVersionSet to interoperate pubgrub_cargp with the other dependency providers, but it doesn’t yet have the concept of empty and any ranges. Done <a href="https://github.com/RyanGibb/babel/commit/c975ab938efb1330a691e4883bc1e732b21cddf3" target="_blank">here</a> . Research notes Contextualising my research activities to date. DONE...2025-03-16 Weekly Notes2025-03-16T00:00:00Z2025-03-16T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/03/16/weekly-notesMost 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...Identifying Key Countries in the Illegal Elephant Ivory Trade Networ2025-03-14T17:34:06Z2025-03-14T17:34:06ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/oW6eqJBH1Hkwu6wE7XzQT3Abstract: Illegal wildlife trade is a key driver of biodiversity loss, but targeting policy to maximise disruption to trade remains a key challenge. A network approach was applied to seizure data to prioritise national action disrupting the illegal trade of elephant ivory. By simulating the removal of countries from trade, targeting groups of countries was found to be most effective due to network redundancy. Despite temporal variability, trade was highly concentrated and cessation in less than 10 countries would have disrupted 75% of trade in 2018-2020. These findings support evidence-based legislation and efficient allocation of conservation resources for tackling illegal wildlife trade. Bio: Jakob is a PhD student in the Conservation and Development Lab (Department of Geography). His...folding2025-03-14T10:21:00Z2025-03-14T10:21:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-8959404450185819176I asked my tame AI: what if the plot unfolded like a bicycle? That's a fun thought experiment! Here's how a plot might unfold like a bicycle: Two Wheels, Two Main Characters: The story revolves around two central figures, perhaps with contrasting personalities or backgrounds. They are interdependent, like the two wheels of a bicycle. One might be impulsive and adventurous, while the other is cautious and grounded. The Chain as Conflict: A central conflict or series of challenges acts as the "chain" driving the narrative forward. This could be an external threat, an internal struggle, or a shared goal. The Frame as Structure: The overall plot structure resembles the bicycle's frame – a sturdy foundation with distinct parts. There would be a clear beginning (the initial assembly), a middle...A fully AI-generated paper just passed peer review; notes from our evidence synthesis workshop2025-03-12T00:00:00Z2025-03-12T00:00:00ZAnilMhttps://anil.recoil.org/notes/ai-for-evidence-synthesis-workshopAccess 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/" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">DSIT</a> and thinktanks about how to approach this rapidly moving area. (The following notes are adapted from jottings from <a href="https://www.cst.cam.ac.uk/people/jkm40" target="_blank">Jessica Montgomery</a> , <a href="https://samreynolds.org/" target="_blank">Sam Reynolds</a> , <a href="https://ai.cam.ac.uk/people/annabelle-scott" target="_blank">Annabelle Scott</a> and myself. They are not at all complete, but hopefully useful!) We...ancient history2025-03-11T14:53:00Z2025-03-11T14:53:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-4549083307741752065I was reminded of two things from the late 70s that a friend in cambridge did, and my cousin in london were doing at the start of their graduate research work. The first was a study of medieval court records in East Anglia, trying to figure out what the demographcs were (in terms of single.married, how many times, how many kids, ages etc) - apparently for every day people in medieval tiems there were virtually no day-to-day records execpt that most people would at some point in their lives, show up in a court...so assuming most people didn't move about much in those day,s you could get a picture by looking at statistics and comparing villages/towns etc Rhe second was a student of cave paintings from rather longer ago - the caves in France and Spain have depictions of animals from 17,000...Weeknotes: 10th March 20252025-03-10T09:07:12Z2025-03-10T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-03-10/Last week iNaturalist I've continued to do a little playing around with <a href="https://www.inaturalist.org" target="_blank">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. I read up on how the "range" maps that iNaturalist <a href="https://www.inaturalist.org/pages/range_maps" target="_blank">have started to share</a> , which they describe in <a href="https://www.inaturalist.org/posts/84677" target="_blank">this blog post</a> , and link to <a href="https://arxiv.org/abs/2306.02564" target="_blank">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" target="_blank">Anil</a> then pointed me at <a href="https://arxiv.org/abs/2502.14977" target="_blank">a newer paper</a> by the same group that looks specifically at trying to model species with very few occurrence points...Mon 10 Mar 20252025-03-10T00:00:00Z2025-03-10T00:00:00ZRyanGhttps://ryan.freumh.org/2025-03-10.htmlPrevious: <a href="2025-03-03.html" target="_blank">Mon 3 Mar 2025</a> Next: <a href="2025-03-17.html" target="_blank">Mon 17 Mar 2025</a> Babel KILL python pubgrub Using Uv’s <a href="https://github.com/astral-sh/uv/blob/c48af312aee48a000a23722ecfdddbe5a4037f78/crates/uv-resolver/src/dependency_provider.rs#L13" target="_blank">dependency
provider</a> . This isn’t feasible at present, as Uv implements a custom resolver. DONE cargo pubgrub Got a <a href="https://github.com/RyanGibb/babel/commit/dcdb92a6840b3d78e3737bb448bf0937d1c9964c" target="_blank">cargo
dependency provider</a> working modified from a repository used to benchmark pubgrub-rs on solving the cargo repository. (Root, ) -> (Cargo Bucket:serde@1.x.y, SemverPubgrub { norml: 1.0.219, pre: ∅ } ) (Cargo Bucket:serde@1.x.y, 1.0.219) -> (Cargo Bucket:serde_derive@1.x.y, SemverPubgrub { norml: >=1.0.219, <1.0.220, pre: ∅ } ), (Cargo Bucket:serde_derive@1.x.y/default=true, SemverPubgrub { norml: >=1.0.219, <1.0.220, pre: ∅ } ) (Cargo Bucket:serde_derive@1.x.y, 1.0.219) -> (Cargo Bucket:quote@1.x.y/proc-macro, SemverPubgrub { norml: >=1.0.35, <2.0.0, pre: ∅ } ), (Cargo Bucket:syn@2.x.y/parsing, SemverPubgrub { norml:...2025-03-09 Weekly Notes2025-03-09T00:00:00Z2025-03-09T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/03/09/weekly-notesHello! 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/" target="_blank">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...Towards Forester 5.0: a design for global identity2025-03-08T12:17:14Z2025-03-08T12:17:14ZJonShttps://www.forester-notes.org/OYOJ/As we move closer to <a href="https://www.forester-notes.org/jms-011P/" target="_blank">Forester 5.0</a> , which <a href="https://www.forester-notes.org/30FN/" target="_blank">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/" target="_blank">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 now 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/" target="_blank">more Web-centric approaches to identity as they emerge</a> . Below, I survey some existing approaches to...Socially self-hosting source code with Tangled on Bluesky2025-03-08T00:00:00Z2025-03-08T00:00:00ZAnilMhttps://anil.recoil.org/notes/disentangling-git-with-blueskyI've been an avid user of <a href="https://github.com" target="_blank">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" target="_blank">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" target="_blank">data sovereignty</a> and so I'm starting to move my source code to self-hosted solutions that are less reliant on centralised services. This has also come up persistently over the years in the <a href="https://ocaml.org" target="_blank">OCaml</a> community, with questions over why participation in packaging <a href="https://discuss.ocaml.org/t/publishing-without-github/3232" target="_blank">requires a GitHub account</a> ever since the <a href="https://anil.recoil.org/notes/opam-1-1-beta" target="_blank">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" target="_blank">new service</a> that's built over the same protocol that <a href="https://bsky.app" target="_blank">Bluesky</a> uses. As I...Our EEG group discussion on 'useful' AI tools2025-03-07T00:00:00Z2025-03-07T00:00:00ZAnilMhttps://anil.recoil.org/notes/the-state-of-ai-tools<a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> organised this week's <a href="https://www.cst.cam.ac.uk/research/eeg" target="_blank">EEG</a> group <a href="https://www.cst.cam.ac.uk/seminars/list/229027" target="_blank">discussion</a> on what AI tools we use for our daily work. I was immediately struck by how few tools there are that are actually making us more productive, so I jotted down notes as the discussion was going on. 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" target="_blank">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 href="https://patrick.sirref.org" target="_blank">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" target="_blank">IBM AI ethics</a> guidance and their <a href="https://github.com/ibm-granite/granite-code-models" target="_blank">granite models</a> , but not much else. Any pointers to other models that don't violate open source licensing norms would be...devaluation of ai2025-03-06T10:36:00Z2025-03-06T10:36:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-4686477184891368666Change for the Machines (with apologies to Pat Cadigan) AI was about models where money equals compute equals big data equals valuations. So all the money going in was to finance compute, thinking where the value lies, and every valuation of every company was about how much compute they had so it was all fake. Companies valuations were just how many H100s they had (compute capacity), as if it correlates to better models (even though they’re usually just wrappers. DeepSeek, and other Chinese models broke that which pissed everyone off, private and public investors included, because it casted doubt on the valuation methodologies, namely that energy, compute, data centres and number of chips were essentially fixed costs and the valuation of companies (and their output) could be measured on...Are you still using OCaml 4.08 or earlier? If so, we need to know2025-03-05T00:00:00Z2025-03-05T00:00:00ZAnilMhttps://anil.recoil.org/notes/deprecating-ocaml-408I started pushing OCaml Docker images over to the <a href="https://hub.docker.com/r/ocaml/opam" target="_blank">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" target="_blank">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" target="_blank">tracks</a> every release of OCaml in the modern era, and also backs the <a href="https://github.com/ocurrent/docker-base-images" target="_blank">automatic building</a> of a huge array of compiler versions and variants across <a href="https://images.ci.ocaml.org/?distro=debian-12&" target="_blank">Linux</a> and <a href="https://images.ci.ocaml.org/?distro=windows-msvc&" target="_blank">Windows</a> . 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/" target="_blank">sponsored by Docker</a> , we must also consider the <a href="https://ocaml.org/policies/carbon-footprint" target="_blank">carbon footprint</a> of our infrastructure. So the...Weeknotes: 3rd March 20252025-03-03T09:07:12Z2025-03-03T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-03-03/Last week Using Go with Wasm and Web Workers As indicated <a href="/weeknotes/2025-02-24/" target="_blank">last week</a> , I spent some time learning how to use both <a href="https://go.dev" target="_blank">Go</a> for <a href="https://webassembly.github.io/spec/core/index.html" target="_blank">Web Assembly</a> and with <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers" target="_blank">Web Workers</a> for parallelism in the browser. I <a href="/blog/go-wasm-workers/" target="_blank">wrote a long post</a> about the details if that's of any interest. Webplats To make the above post I had to actually do tweaks to <a href="https://github.com/mdales/webplats/" target="_blank">Webplats</a> , the software I wrote that hosts this site. The technical details aren't that exciting, but it's just nice to observe how liberating it is to be able to hit a limitation of the hosting tool you're using and be able to quickly change it to remove that limitation. I did however also have to disable code syntax highlighting as <a href="https://github.com/patricoferris/hilite" target="_blank">hilite</a> (or possibly one the libraries it uses to tokenise the code) is struggling with Go, and no syntax-highlighting seemed a better fallback...Mon 3 Mar 20252025-03-03T00:00:00Z2025-03-03T00:00:00ZRyanGhttps://ryan.freumh.org/2025-03-03.htmlPrevious: <a href="2025-02-25.html" target="_blank">Tue 25 Feb 2025</a> Next: <a href="2025-03-10.html" target="_blank">Mon 10 Mar 2025</a> <a href="https://github.com/RyanGibb/babel" target="_blank">Babel</a> A Debian encoding in PubGrub DONE <a href="https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides" target="_blank">provides</a> with virtual packages <a href="https://github.com/RyanGibb/pubgrub-debian/commit/0e1b76fd89b8773b555905858e3e3ed3796e78a3" target="_blank">here</a> DONE cross ecosystem resolutions between opam and debian Done in <a href="https://github.com/RyanGibb/babel" target="_blank">babel</a> . Some examples follow. conf-gmp #[test] fn test_conf_gmp_variables() -> Result<(), Box<dyn Error>> { let root = OpamPackage::Root(vec![ ( OpamPackage::Base("conf-gmp".to_string()), Range::singleton(OpamVersion("4".to_string())), ), ( OpamPackage::Var("os-family".to_string()), Range::singleton(OpamVersion("debian".to_string())), ), ( OpamPackage::Var("os-distribution".to_string()), Range::singleton(OpamVersion("debian".to_string())), ), ]); solve_repo( BabelPackage::Opam(root), BabelVersion::Opam(OpamVersion("".to_string())), "../pubgrub_opam/opam-repository/packages",...Oh my Claude, we need agentic copilot sandboxing right now2025-03-02T00:00:00Z2025-03-02T00:00:00ZAnilMhttps://anil.recoil.org/notes/claude-copilot-sandbox<a href="https://github.com/yminsky" target="_blank">Yaron Minsky</a> nerdsniped me last week into getting OCaml to drive the 80s-retro <a href="https://www.adafruit.com/product/2345" target="_blank">RGB Matrix</a> displays. I grabbed one from the local Pi Store and soldered it together with help from <a href="https://mynameismwd.org" target="_blank">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" target="_blank">Claude Code</a> released <a href="https://ai-claude.net/" target="_blank">last week</a> to see if we could entirely autogenerate the bindings. TL;DR: 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 href="https://web.eecs.umich.edu/~comar/" target="_blank">Cyrus Omar</a> and <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> and I <a href="https://anil.recoil.org/papers/2024-hope-bastion" target="_blank">wrote</a> about this a few months ago. Read on... Wiring up the display to my...A hardware description language using OCaml effects2025-03-01T00:00:00Z2025-03-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/tracing-hdl-with-effectsA hardware description language using OCaml effects This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> and <a href="https://github.com/andrewray" target="_blank">Andy Ray</a> . Programming FPGAs using functional programming languages is a very good fit for the problem domain. OCaml has the <a href="https://anil.recoil.org/notes/fpgas-hardcaml" target="_blank">HardCaml ecosystem</a> to express hardware designs in OCaml, make generic designs using the power of the language, then simulate designs and convert them to Verilog or VHDL. HardCaml is very successfully used in production at places like <a href="https://janestreet.com" target="_blank">Jane
Street</a> , but needs quite a lot of prerequisite knowledge about the full OCaml language. In particular, it makes very heavy use of the <a href="https://github.com/janestreet/hardcaml/blob/master/docs/hardcaml_interfaces.md" target="_blank">module
system</a> in order to build up the circuit description as an OCaml data...An Introductory Guide on How to Create Beautiful Slides2025-02-28T17:59:20Z2025-02-28T17:59:20ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/dFShkouits1FFyUctiSSH5Frank Feng is a first-year Ph.D. student in the Department of Computer Science and Technology at the University of Cambridge. His research interests lie at the intersection of machine learning and earth sciences, with a particular focus on the application of self-supervised learning in remote sensing.2025-02-28 Weekly Notes2025-02-28T00:00:00Z2025-02-28T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/02/28/weekly-notesThis 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" target="_blank">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. In addition to this, I...The AIETF arrives, and not a moment too soon2025-02-28T00:00:00Z2025-02-28T00:00:00ZAnilMhttps://anil.recoil.org/notes/ai-ietf-aiprefsThe <a href="https://ietf.org" target="_blank">IETF</a> <a href="https://bsky.app/profile/ietf.org/post/3lj6w5fpjx22u" target="_blank">announced</a> their new <a href="https://www.ietf.org/blog/aipref-wg/" target="_blank">AI Preferences Working Group</a> (AIPREF), which will "work on standardizing building blocks that allow for the expression of preferences about how content is collected and processed for Artificial Intelligence models" . This is quite well timed; the IETF tries not to standardise too early before there is <a href="https://www.ietf.org/runningcode/" target="_blank">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" target="_blank">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/" target="_blank">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/" target="_blank">scaling wall</a> and possibly triggering the start of a renewed data scraping frenzy. How do websites interact with AI crawlers right now? 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...Blogging BIOSPACE25!2025-02-28T00:00:00Z2025-02-28T00:00:00ZOnkarGhttp://localhost:4000/2025/02/28/biospaceBlogging BIOSPACE25! 28th February, 2025 Hello world , this is my first Jekyll blog post. With that formality out the way… a couple weeks ago I headed off to the Biospace conference at the ESA-ESRIN Observation Center in Frascati, Italy. While I was only there for 2 days, there was a lot to be excited about. Just past the entrance to the ESA-ESRIN Observation Center, and also past some fairly intense security! My big takeaway from the opening speeches was that this is the first year that the ESA is spending more on building out its data science capabilities than it is on putting satellites into space. To me, this is indicative of the fact that the marginal benefit from putting effort into effectively wrangling huge amounts of data is now greater than that from collecting huge amounts of...Tue 25 Feb 20252025-02-25T00:00:00Z2025-02-25T00:00:00ZRyanGhttps://ryan.freumh.org/2025-02-25.htmlPrevious: <a href="2025-02-17.html" target="_blank">Mon 17 Feb 2025</a> Next: <a href="2025-03-03.html" target="_blank">Mon 3 Mar 2025</a> Babel: opam repository with <a href="https://github.com/RyanGibb/pubgrub-opam" target="_blank">pubgrub-opam</a> A Debian/Alpine encoding in PubGrub, which I think should be much simpler than Opam DONE Got the basics in <a href="https://github.com/RyanGibb/pubgrub-debian" target="_blank">pubgrub-debian</a> Here’s a solve of openssh-server: (openssh-server, 1:7.9p1-10+deb10u2) -> (libssl1.1, >=1.1.1), (openssh-client, 1:7.9p1-10+deb10u2), (libc6, >=2.26), (libcom-err2, >=1.43.9), (procps, *), (lsb-base, >=4.1+Debian3), (libaudit1, >=1:2.2.1), (dpkg, >=1.9.0), (ucf, >=0.28), (libselinux1, >=1.32), (libgssapi-krb5-2, >=1.17), (libsystemd0, *), (debconf: >=0.5 | debconf-2.0: *, *), (libpam0g, >=0.99.7.1), (openssh-sftp-server, *), (libpam-runtime, >=0.76-14), (libpam-modules, >=0.72-9), (zlib1g, >=1:1.1.4), (adduser, >=3.9), (libkrb5-3, >=1.13~alpha1+dfsg), (libwrap0, >=7.6-4~) (libssl1.1,...Using Go with Wasm and Web Workers2025-02-24T15:08:58Z2025-02-24T15:08:58ZMichaelDhttps://digitalflapjack.com/blog/go-wasm-workers/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. Example If you're viewing this page directly (rather than via an RSS reader) and your browser supports Wasm, then below you should see a <a href="https://en.wikipedia.org/wiki/Mandelbrot_set" target="_blank">Mandelbrot fractal</a> render into place above, with different chunks appearing at different points (and on Safari you might see some banding, which is it failing to align the canvas tiles properly rather than being an issue with the...Weeknotes: 24th February 20252025-02-24T09:07:12Z2025-02-24T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-02-24/Last Week LIFE As started <a href="/weeknotes/2025-02-17/" target="_blank">last week</a> , I finished the changes to let you run the <a href="https://github.com/quantifyearth/life/" target="_blank">LIFE pipeline</a> using the bulk data downloads from the <a href="https://iucnredlist.org/" target="_blank">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. After being very impressed last week at the behaviour of <a href="https://duckdb.org/" target="_blank">DuckDB</a> , particularly in the way it'd let me do spatial queries, I did realise that the performance of ST_UNION_AGG , it's version of PostGIS's ST_UNION was significantly slower than just pulling the different ranges for a species and using <a href="https://shapely.readthedocs.io/en/stable/manual.html" target="_blank">shapely</a> to unify them in Python. It's still...Robotics and Sensing for Sustainable Crop Production2025-02-21T16:26:06Z2025-02-21T16:26:06ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/9hADtA5Fov2vdDt9iNVjJQAbstract: Crop farming is essential in our society, providing food, feed, fiber, and fuel. We heavily rely on crop production, but at the same time, we need to reduce the production footprint. We aim to address this key challenge by investigating new solutions to produce crops more sustainably. We study novel technology-driven approaches to move toward sustainable crop production. Agricultural robots offer promising directions to address management challenges in agricultural fields or support plant breeding efforts through large-scale trait acquisition. For that, field robots need the ability to perceive and model their environment, predict possible future developments, and make appropriate decisions in complex and changing situations. This talk will showcase our recent developments in...2025-02-21 Weekly Notes2025-02-21T00:00:00Z2025-02-21T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/02/21/weekly-notesSo 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 😷. This week started by going to the Social and Spatial Epidemiology Module from the <a href="https://www.phs.group.cam.ac.uk/" target="_blank">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. Special shoutout to <a href="https://health.usnews.com/doctors/james-lewis-291573" target="_blank">Dr James Lewis</a> , invited speaker to the module, who is an active nephrologist in Atlanta, Georgia. His lecture is one of the most engaging I’ve ever seen here in Cambridge. I really enjoyed how he initiated with the story about his aunt and ended with his daughter. He also...A trio of papers I read on biodiversity and forests this week2025-02-20T00:00:00Z2025-02-20T00:00:00ZAnilMhttps://anil.recoil.org/notes/forest-apps-and-benchmarksThis week I've been reading three really nice pieces of work by my colleagues, in the form of a <a href="https://www.nature.com/articles/s44358-025-00022-3" target="_blank">review paper</a> on biodiversity and AI, a <a href="https://besjournals.onlinelibrary.wiley.com/doi/10.1111/2041-210X.14503" target="_blank">benchmark</a> for 3D forest reconstruction using laser scanners and a <a href="https://github.com/MingyueX/GreenLens" target="_blank">mobile app</a> for measuring the width of tree trunks. A real bonanza for forest lovers! Review paper on mapping opportunities for AI in biodiversity A paper on ' <a href="https://www.nature.com/articles/s44358-025-00022-3" target="_blank">Harnessing AI to fill global shortfalls in biodiversity knowledge</a> ' just came out in Nature Biodiversity today (via <a href="http://oisin.info" target="_blank">Oisin Mac Aodha</a> ). They start with the baseline present uses of AI (camera traps, acoustic monitoring and improved data analysis) which are pretty well known to anyone in the field, but then introduce <a href="https://www.nature.com/articles/s44358-025-00022-3/figures/1" target="_blank">a lovely diagram of future uses</a> of AI for biodiversity which includes: Rapid retrieval of existing information means both looking into existing literature, but also the digitisation of existing museum...Weeknotes: 17th February 20252025-02-17T09:07:12Z2025-02-17T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-02-17/Last Week LIFE For the <a href="https://github.com/quantifyearth/life/" target="_blank">LIFE extinction-risk metric pipeline</a> , all the species data comes from the <a href="https://www.iucnredlist.org/" target="_blank">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. 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...Vpnkit, Void Processes, LSP Servers2025-02-17T00:00:00Z2025-02-17T00:00:00ZPatrickFhttps://patrick.sirref.org/weekly-2025-02-17/Previous <a href="https://patrick.sirref.org/weeklies/" target="_blank">weeklies</a> used strong emphasis to distinguish sections. This comes from <a href="https://patrick.sirref.org/forester/" target="_blank">Forester</a> 's philosophy about atomicity of the content in your forest . However, subtrees are supported! I quickly hacked together the ability to use subheadings to indicate subtrees . This is strictly less expressive than the \subtree{} of <a href="https://patrick.sirref.org/forester/" target="_blank">Forester</a> 's default syntax as we cannot close heading sections in Markdown. This weekly uses subtrees. Vpnkit I spent some time this week trying to upgrade vpnkit to OCaml 5. I was originally working on <a href="https://patrick.sirref.org/vpnkit-er/" target="_blank">a paper idea</a> which might need benchmarks, but <a href="https://patrick.sirref.org/anilmadhavapeddy/" target="_blank">Anil</a> and I decided we could simply point to the port I did and show how it has simplified much of the code. Void Processes Work continued on implementing (and fully exploring) <a href="https://patrick.sirref.org/void-process/" target="_blank">void processes</a> . A lot of the groundwork already...Mon 17 Feb 20252025-02-17T00:00:00Z2025-02-17T00:00:00ZRyanGhttps://ryan.freumh.org/2025-02-17.htmlPrevious: <a href="2025-02-10.html" target="_blank">Mon 10 Feb 2025</a> Next: <a href="2025-02-25.html" target="_blank">Tue 25 Feb 2025</a> Babel: opam repository with <a href="https://github.com/RyanGibb/pubgrub-opam" target="_blank">pubgrub-opam</a> DONE <a href="https://github.com/RyanGibb/pubgrub-opam/tree/main/example-repo" target="_blank">tests</a> DONE <a href="https://crates.io/crates/pubgrub/0.3.0-alpha.1" target="_blank">PubGrub
0.3.0</a> <a href="https://github.com/astral-sh/uv" target="_blank">Uv</a> is using the development branch of PubGrub. There’s a lot of improvements to be had since the last release was 4 years ago. The new version bounds will cleanly express version constraints, e.g. stop converting <= 1.0.0 to < 1.0.0.1 It looks like we might be able to manually add conflicts with <a href="https://github.com/pubgrub-rs/pubgrub/blob/23357967c6473b358ffb7c0092e9c3fc4e4c972b/src/internal/core.rs#L94" target="_blank">add_incompatibility</a> Ah, actually this is an internal thing. Completed <a href="https://github.com/RyanGibb/pubgrub-opam/commit/d67fcfcfd02fc1e5fb720d5f89986d895693dce4" target="_blank">here</a> . DONE conjunctions and disjunctions in filtered package formula Take "D" { test & > "2.0.0"} as an example. We encode this as, (filtered-package-formula-variable-version, 1.0.0) -> (D {(test & = >2.0.0)}, *) (D {(test & = >2.0.0)}, false) -> (`test`, false) (D {(test & = >2.0.0)}, true) -> (`test`, true), (A,...Thoughts on the National Data Library and private research data2025-02-17T00:00:00Z2025-02-17T00:00:00ZAnilMhttps://anil.recoil.org/notes/uk-national-data-libOver the past year, <a href="https://toao.com" target="_blank">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" target="_blank">Conservation Evidence</a> project. This is legally possible via our <a href="https://www.lib.cam.ac.uk/stories/student-guide-libraries" target="_blank">institutional subscriptions</a> that give us license to fulltexts, and the incredibly helpful <a href="https://uk.linkedin.com/in/james-caudwell-60681766" target="_blank">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" target="_blank">National Data Library</a> and also with the UK <a href="https://www.wildlifetrusts.org/" target="_blank">Wildlife Trusts</a> ... The difficulty of access controlled bulk data downloads In late 2023, once we got past the legal aspects of downloading closed access papers <a href="https://anil.recoil.org/#fn-1" target="_blank">[1]</a> it was still remarkably...Using Low-cost, Research-led, Decentralised Networks2025-02-14T16:25:58Z2025-02-14T16:25:58ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/8PhivRm85jZuFg8v55yo7FFull Title: Using Low-cost, Research-led, Decentralised Networks to Increase Access to High Quality Microspatial Data on Building Stocks, and the Built and Natural Infrastructure Abstract: The Colouring Cities Research Programme (CCRP) is overseen by an informal, international academic consortium that uses its decentralized research-led network, to co-create and manage, permanent open data/visualisation platforms across countries. These provide standardised, open microspatial data on the characteristics, performance, and short/long-term dynamics of building stocks, and built and natural infrastructure. They also test feedback loops between live streaming, computational inference, and crowdsourcing approaches to improve coverage and reliability of data, and to support cross...BIOSPACE25 Blog2025-02-14T00:00:00Z2025-02-14T00:00:00ZAndrésZGhttps://ancazugo.github.io/research/outreach/2025/02/14/biospace25-blogDay 2 My presentation (available to watch <a href="https://www.youtube.com/live/e-eQ8XhRrsE?si=lv0p4CV3kdKGxmTk&t=14326" target="_blank">here</a> ) A couple of people approached me about deploying the Terracorder, particularly an organisation that works in training Indigenous communities in the Amazon and Kenya. (Diana Mastracci) Got asked about the technical components of the terracorder (how far can two devices be from each other?) Several people scanned the QR code, so hopefully, they will contact me. A representative of the European Commission asked about the urban tree map (Have to watch the recording because he ran away after the presentation) Poster Session Onkar did really great in his presentation. There are people who are working on using GeoFM for sustainable goals. There is a trend on using as much RS data as possible for different applications. Michael Munk from DHI...`nmcli` connection to internal WiFi2025-02-14T00:00:00Z2025-02-14T00:00:00ZRichardMhttps://mort.io/blog/internalcl-wifi/Using my fancy (?) new(-ish) Linux laptop running <a href="https://nixos.org/" target="_blank">NixOS</a> , I finally had cause to connect to our internal Wi-Fi network. This was not entirely trivial due to the various configuration options required. So here goes, for the record, what I did as an aide memoir for me and in case it’s useful for anyone else… First, create the connection – the Wi-Fi network in question is named Internal-CL : $ sudo nmcli connection add type wifi con-name Internal-CL ssid Internal-CL Connection ' Internal-CL ' (8f1ddcc9-4b1f-4e5d-9992-522714685eb4 ) successfully added. Then, configure it: $ sudo nmcli connection edit Internal-CL = == | nmcli interactive connection editor | = == Editing existing ' 802-11-wireless ' connection: ' Internal-CL ' Type ' help ' or ' ? ' for available commands. Type ' print '...Updated preprint on quantifying biodiversity cost of food consumption2025-02-12T00:00:00Z2025-02-12T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-food-life-2We've uploaded a revised preprint on our ongoing work on quantifying the <a href="https://anil.recoil.org/papers/2024-food-life" target="_blank">biodiversity cost of global food consumption</a> , lead by <a href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball" target="_blank">Thomas Ball</a> . This is based on the <a href="https://anil.recoil.org/news/2024-life-3" target="_blank">recently published</a> <a href="https://anil.recoil.org/projects/life" target="_blank">LIFE</a> metric, combined with supply chain data and provenance modeling. [… <a href="https://anil.recoil.org/news/2024-food-life-2" target="_blank">196 words</a> ] <a href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball" target="_blank">Thomas Ball</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.york.ac.uk/sei/staff/jonathan-green/" target="_blank">Jonathan Green</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , David Williams and <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> . Working paper at <a href="https://www.cambridge.org/engage/coe/article-details/67a21eac81d2151a0225692b" target="_blank">Cambridge Open Engage</a> . <a href="https://www.cambridge.org/engage/coe/article-details/67a21eac81d2151a0225692b" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.33774/coe-2024-fl5fk-v2" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-food-life.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-food-life.pdf" target="_blank">PDF</a>Weeknotes: 10th February 20252025-02-10T09:07:12Z2025-02-10T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-02-10/Last week Yirgacheffe I hand't planned this, but I spent a day reworking the <a href="https://github.com/quantifyearth/yirgacheffe/" target="_blank">Yigacheffe</a> APIs towards what I've always thought of as the next major version interface, and had filed under "mañana" 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. 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...Teaching, teaching, teaching...2025-02-10T00:00:00Z2025-02-10T00:00:00ZPatrickFhttps://patrick.sirref.org/weekly-2025-02-10/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/" target="_blank">Discrete Maths</a> . I supervise three third year students for their <a href="https://patrick.sirref.org/part-ii-2024/" target="_blank">final year project</a> and another one I co-supervise with <a href="https://patrick.sirref.org/mdales/" target="_blank">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" target="_blank">produced some materials for that</a> . OCaml Within the OCaml universe I spent a good bit of...Mon 10 Feb 20252025-02-10T00:00:00Z2025-02-10T00:00:00ZRyanGhttps://ryan.freumh.org/2025-02-10.htmlPrevious: <a href="2025-02-03.html" target="_blank">Mon 3 Feb 2025</a> Next: <a href="2025-02-17.html" target="_blank">Mon 17 Feb 2025</a> Babel: solve the opam repository with <a href="https://github.com/RyanGibb/pubgrub-opam" target="_blank">pubgrub-opam</a> While converting the whole repository I fixed a bug in a package <a href="https://github.com/ocaml/opam-repository/pull/27429" target="_blank">definition</a> DONE <a href="https://github.com/RyanGibb/pubgrub-opam/commit/2cb66fe1ae13bc16e1b5116948de5ee2dcba990a" target="_blank">on-demand
dependency provider</a> opam-repository has a lot of packages, so we only load packages we need TODO add a <a href="https://pubgrub-rs-guide.pages.dev/pubgrub_crate/caching" target="_blank">caching
dependency provider</a> with interior mutation DONE parse <a href="https://opam.ocaml.org/doc/Manual.html#Package-Formulas" target="_blank">filtered
package formula</a> While the grammar allows for it I can’t actually find any booleans or integers in the dependency formula of Opam. Why are they there? I’m just ignoring them for now so I don’t need to complement logic for comparing them etc. DONE encode filtered package formula in pubgrub Take (A, 1) depending on B {build} as a minimal example. We encode this in the ‘package calculus’ as (A, 1) -> (B {build}, *) (B {build}, lhs) -> (B, *), (`build`, false) (B {build}, rhs) -> (`build`, true)...The Cambridge "Green Blue" competition to reduce emissions2025-02-10T00:00:00Z2025-02-10T00:00:00ZAnilMhttps://anil.recoil.org/notes/cambridge-green-blue<a href="https://mlg.eng.cam.ac.uk/carl/" target="_blank">Carl Edward Rasmussen</a> recently gave a great <a href="https://watch.eeg.cl.cam.ac.uk/w/qEsMt2Ayk37SaKgxrfwoBt" target="_blank">talk</a> in our group about his thoughts on <a href="https://mlg.eng.cam.ac.uk/carl/words/mechanisms.pdf" target="_blank">mechanisms against climate change</a> . He persuasively argued that the <a href="https://unfccc.int/process-and-meetings/the-paris-agreement" target="_blank">Paris Agreement</a> was doing more harm than good by giving the illusion of being a concrete agreement, but is in reality a huge distraction. Our actual <a href="https://ourworldindata.org/co2-emissions" target="_blank">emissions</a> have increased since the Paris agreement was signed! Carl <a href="https://www.youtube.com/watch?v=naFaQsFxs1g" target="_blank">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 " <a href="https://mlg.eng.cam.ac.uk/carl/climate/themis0.pdf" target="_blank">Themis Mechanism</a> " as a simple alternative for equitable global emission reduction ( <a href="https://mlg.eng.cam.ac.uk/carl/climate/themis.pdf" target="_blank">long form</a> ). This got me brainstorming with Carl about how to test his theories out and we came up with an...Using AT Proto for more than just Bluesky posts2025-02-09T00:00:00Z2025-02-09T00:00:00ZAnilMhttps://anil.recoil.org/notes/atproto-for-fun-and-bloggingWhile <a href="https://bsky.app" target="_blank">Bluesky</a> is taking off like a rocket, a number of us <a href="https://anil.recoil.org/notes/enter-the-matrix-hookshot" target="_blank">moving</a> towards <a href="https://anil.recoil.org/" target="_blank">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 href="https://martin.kleppmann.com" target="_blank">Martin Kleppmann</a> 's hard work on the " <a href="https://atproto.com/" target="_blank">AT Protocol</a> " that underpins the Bluesky network. Martin recently gave us a <a href="https://talks.cam.ac.uk/talk/index/224767" target="_blank">deep-dive into the AT proto</a> in the Cambridge <a href="https://www.cl.cam.ac.uk/research/security/" target="_blank">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" target="_blank">his paper</a> on the subject which explains the technical architecture extremely clearly. __LINK_8__ One of the key problems this solves is one I'm having with using my <a href="https://en.wikipedia.org/wiki/ActivityPub" target="_blank">ActivityPub</a> -based services at the moment. Each of these services (like my <a href="https://crank.recoil.org" target="_blank">video</a> or <a href="https://amok.recoil.org" target="_blank">microblog</a> sites) do not share a common...Sway2025-02-07T00:00:00Z2025-02-07T00:00:00ZRyanGhttps://ryan.freumh.org/sway.htmlPublished Fri 7 Feb 2025. Tags: <a href="/technology.html" target="_blank">technology</a> . I use the <a href="https://github.com/swaywm/sway" target="_blank">sway</a> Wayland compositor, which is a clone of the X11 <a href="https://i3wm.org/" target="_blank">i3</a> window manager for <a href="https://wayland.freedesktop.org/" target="_blank">Wayland</a> . Wayland is a communications protocol for next-generation display servers used in Unix-like systems which has been adopted as the default display server by Linux distributions including Fedora with KDE, and Ubuntu and Debian with GNOME. I use the sway Wayland compositor. It aims to replace the venerable X display server with a modern alternative. X leaves logic such as window management to application software, which has allowed the proliferation of different approaches. Wayland, however, centralises this logic in the ‘compositor’, which assumes both display server and window manager roles. Status In lieu of a status bar I invoke a...Entering the Matrix with Hookshot2025-02-07T00:00:00Z2025-02-07T00:00:00ZAnilMhttps://anil.recoil.org/notes/enter-the-matrix-hookshotWe've been happy users of <a href="https://matrix.org" target="_blank">Matrix</a> for our group communications in the <a href="https://www.cst.cam.ac.uk/research/eeg" target="_blank">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" target="_blank">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! 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). 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...Programming FPGAs using OCaml2025-02-07T00:00:00Z2025-02-07T00:00:00ZAnilMhttps://anil.recoil.org/notes/fpgas-hardcamlWith the vast amount of data we have these days for our <a href="https://anil.recoil.org/projects/plancomp" target="_blank">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" target="_blank">twelve years ago</a> in the form of <a href="https://en.wikipedia.org/wiki/Field-programmable_gate_array" target="_blank">FPGAs</a> ! 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 href="https://mynameismwd.org" target="_blank">Michael Dales</a> work on <a href="https://github.com/quantifyearth/yirgacheffe" target="_blank">Yirgacheffe</a> or <a href="https://github.com/omarathon" target="_blank">Omar Tanner</a> 's work on in-memory <a href="https://anil.recoil.org/ideas/compressive-geospatial" target="_blank">compressive computation</a> . The other angle is to work on the low-level API to programming the FPGAs, to get away from...`just` OCaml2025-02-07T00:00:00Z2025-02-07T00:00:00ZRichardMhttps://mort.io/blog/just-ocaml/In similar vein to a <a href="https://mort.io/blog/just-latex" target="_blank">recent post</a> , I have also started using <a href="https://just.systems/" target="_blank">just</a> when I periodically need to rebuild my <a href="https://ocaml.org/" target="_blank">OCaml</a> tool <a href="https://mort.io/blog/just-ocaml/#1" target="_blank">1</a> <a href="https://github.com/mor1/ocal" target="_blank">ocal</a> . So I ended up replacing the old <a href="https://github.com/mor1/ocal/blob/6bb129627f9d1f27ab31cee810013b362ab80067/Makefile" target="_blank">Makefile</a> with a shiny new <a href="https://github.com/mor1/ocal/blob/8ef8631ae5bbe0315e359d725d467e7d0403fd31/Justfile" target="_blank">Justfile</a> . As it also proved useful in another (more esoteric) tool I wrote <a href="https://github.com/mor1/cst-tools" target="_blank">for parsing
out exam results for my students so I can paste into email
easily</a> , I thought I’d put it here for the record. So here it is… 1 Largely due to <a href="https://nixos.org/" target="_blank">NixOS</a> upgrades moving tools into different locations. Usual preamble of course: _default : @ just --list Then set some common variables: PWD := env ( " PWD " ) DOCDIR := " _build/default/_doc/_html " BUILDDIR := " _build/install/default/bin " Then set the target — the tool name, in this case ocal (so named as this is an OCaml re-implementation of a tool approximating the trad Unix <a href="https://en.wikipedia.org/wiki/Cal_(command)" target="_blank">cal</a> tool): TARGET := " ocal...Reverse `find`2025-02-05T00:00:00Z2025-02-05T00:00:00ZRichardMhttps://mort.io/blog/reverse-find/In the last few days I discovered I needed to search back up the filesystem from $CWD to find the first occurence of a file (specifically, a Justfile but that’s by-the-by). Got bored of doing it by hand so wrote a <a href="https://www.gnu.org/software/bash/" target="_blank">bash</a> shell function; here ’tis: rf ( ) { local D while ! eza - l " $ { D := . } / $ 1 " ; do # first, check `$CWD` [ " $ ( realpath " $ D / $ 1 " ) " == " / $ 1 " ] && break # stop if we hit `/` already D = $ D /.. # else, iterate one layer up done } Invoke as (e.g.,) rf Justfile . Alternatively, as a one-liner: F = Justfile ; while ! eza - l $ { D := . } / $ F ; do [ " $ ( realpath $ D / $ F ) " == " / $ F " ] && break ; D = $ D /.. ; done ; unset DFake papers abound in the literature2025-02-04T00:00:00Z2025-02-04T00:00:00ZAnilMhttps://anil.recoil.org/notes/ai-contamination-of-papers<a href="https://toao.com" target="_blank">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" target="_blank">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: 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. -- 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" target="_blank">The Conversation</a> What caught my eye in this article is their development of the <a href="https://asistdl.onlinelibrary.wiley.com/doi/10.1002/asi.24495" target="_blank">Problematic Paper Screener</a> , which the good folks at <a href="https://en.wikipedia.org/wiki/Retraction_Watch" target="_blank">Retraction Watch</a> developed. It works with high precision to detect...Weeknotes: 3rd February 20252025-02-03T09:07:12Z2025-02-03T09:07:12ZMichaelDhttps://digitalflapjack.com/weeknotes/2025-02-03/Last week STAR 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" target="_blank">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" target="_blank">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: AMPHIBIA Total Chess: 3249 Total Michael: 3260 In Chess data, not in Michael data: 0 In Michael data, not in Chess data: 11 AVES Total Chess: 2180 Total Michael: 2214 In Chess data,...Keyboard2025-02-03T00:00:00Z2025-02-03T00:00:00ZRyanGhttps://ryan.freumh.org/keyboard.htmlPublished Mon 3 Feb 2025. Tags: <a href="/technology.html" target="_blank">technology</a> . I developed RSI symptom’s at the tail of writing my <a href="https://ryan.freumh.org/papers/2022-mphil-sns.pdf" target="_blank">MPhil
dissertation</a> and started looking for ways to work more ergonomically. As someone who’s often typing in one form or anther 8+ hours a day one obvious aspect to look at was my keyboard. I’m using the <a href="https://www.zsa.io/moonlander" target="_blank">ZSA Moonlander</a> as my daily driver which I purchased with my PhD stipend machine budget. It’s an <a href="https://en.wikipedia.org/wiki/Ergonomic_keyboard" target="_blank">ergonomic</a> <a href="https://en.wiktionary.org/wiki/ortholinear" target="_blank">ortholinear</a> split mechanical keyboard. The ortholinear layout has allowed me to learn how to <a href="https://en.wikipedia.org/wiki/Touch_typing" target="_blank">touch type</a> (I could just never get the hang of it on a normal keyboard). Using keyboard-centric editors like <a href="vim.html" target="_blank">Vim</a> and <a href="emacs.html" target="_blank">Emacs</a> , as well as <a href="./firefox.html#tridactyl" target="_blank">Firefox Tridactyl</a> , has helped my reduce mouse usage which had also proved aggravating. I was briefly looking at 3D-printing a custom keyboard, like the <a href="https://github.com/joshreve/dactyl-keyboard" target="_blank">Dactyl-ManuForm</a> , but...Firefox2025-02-03T00:00:00Z2025-02-03T00:00:00ZRyanGhttps://ryan.freumh.org/firefox.htmlPublished Mon 3 Feb 2025. I use Firefox as my default browser. You can see my configuration in <a href="./nix.html" target="_blank">Nix</a> OS <a href="https://github.com/RyanGibb/nixos/blob/ed9ff44afef12350c9e2010cc4e76d6802abb65d/home/gui/default.nix#L90-L159" target="_blank">here</a> . Having it in Nix is handy so I don’t have to sign into a Firefox account on a live ISO or new machine install in order to get the environment I’m used to. Tridactyl I use <a href="https://github.com/tridactyl/tridactyl/" target="_blank">Tridactyl</a> for many useful Vim-like bindings in Firefox. Similar to Firefox you can see my configuration <a href="https://github.com/RyanGibb/nixos/blob/master/home/gui/tridactylrc" target="_blank">here</a> . Some useful bindings are: h j k l scroll f enter ‘hint’ mode, using keystrokes to follow a link F opens a link in a new tab ;w open in a new window ;y copy link v highlights an element of text once here we can use caret mode <F7> to select text yd duplicate tab My custom binding i let’s me copy a link to a <a href="https://datatracker.ietf.org/doc/html/rfc3986#section-3.5" target="_blank">URL
fragment</a> with hint mode; bind i hint -JFc [id] e => {...Mon 3 Feb 20252025-02-03T00:00:00Z2025-02-03T00:00:00ZRyanGhttps://ryan.freumh.org/2025-02-03.htmlPrevious: <a href="2025-01-27.html" target="_blank">Mon 27 Jan 2025</a> Next: <a href="2025-02-10.html" target="_blank">Mon 10 Feb 2025</a> Babel I’ve been focusing on our new package manager to rule them all, code name `Babel’, this week. PubGrub opam dependency provider I’m making progress so supporting <a href="https://opam.ocaml.org/" target="_blank">Opam</a> ’s full feature set with the <a href="https://pubgrub-rs-guide.pages.dev/" target="_blank">Rust
implementation of the PubGrub</a> version solving algorithm, which we’re aiming to use for a cross-ecosystem solver. <a href="https://github.com/RyanGibb/opam-giga-repository" target="_blank">Previous
work</a> has used the Opam semantics for multiple ecosystems. The PubGrub encoding is quite similar to the `HyperRes’ formalism we defined for a minimal subset of functionality between ecosystems.. DONE I’ve added support for the complicated ordering of <a href="https://opam.ocaml.org/doc/Manual.html#Version-ordering" target="_blank">opam
versions</a> - <a href="https://github.com/RyanGibb/pubgrub-opam/commit/7f941e30f5b6ea11c201e667c2aee6984606bb26" target="_blank">here</a> DONE I’ve added an encoding of boolean logic in Opam’s <a href="https://opam.ocaml.org/doc/Manual.html#Package-Formulas" target="_blank">package
formula</a> - <a href="https://github.com/RyanGibb/pubgrub-opam/commit/63f12dd256fac440d0c69a079c324855cbee224c" target="_blank">here</a> We support version formula with PubGrub’s Range operations (e.g. union, intersection, etc) We support...Satellites are getting too good for forest carbon?2025-02-03T00:00:00Z2025-02-03T00:00:00ZAnilMhttps://anil.recoil.org/notes/forests-spatial-resolutionThere's a <a href="https://www.science.org/doi/10.1126/science.adt6811" target="_blank">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 too good to be accurate for forest carbon estimation. 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. [...] Because most carbon in a forest is stored in large trees, map resolutions should at minimum exceed the crown diameter of a typical large...Emacs2025-02-02T00:00:00Z2025-02-02T00:00:00ZRyanGhttps://ryan.freumh.org/emacs.htmlPublished Sun 2 Feb 2025. Last update Tue 18 Feb 2025. Tags: <a href="/technology.html" target="_blank">technology</a> . I started using Emacs for the <a href="https://www.djcbsoftware.nl/code/mu/mu4e/" target="_blank">mu4e</a> mail client after using and liking the <a href="https://www.djcbsoftware.nl/code/mu/" target="_blank">mu</a> mail indexer on the command line (read more about my <a href="mail-client.html" target="_blank">mail client
setup</a> ). Similarly, I was using the <a href="https://ledger-cli.org/" target="_blank">ledger-cli</a> accounting system, and found the Emacs minor mode to be great. Then I got curious about Emacs <a href="https://orgmode.org/" target="_blank">Org Mode</a> and started using it for note taking and task management. Now I’m using Emacs as my primary development environment. I realised that configuring Emacs to my liking would be like second job, which I didn’t have the bandwidth for, so I started using the ‘distribution’ <a href="https://github.com/doomemacs/doomemacs" target="_blank">Doom Emacs</a> . It enables Vim bindings everywhere with <a href="https://github.com/emacs-evil/evil" target="_blank">Evil Mode</a> which, coming from <a href="vim.html" target="_blank">Vim</a> , made it much easier to get up to speed. The Emacs philosophy...Disentangling carbon credits and offsets with contributions2025-02-02T00:00:00Z2025-02-02T00:00:00ZAnilMhttps://anil.recoil.org/notes/carbon-credits-vs-offsetsThe terms <a href="https://en.wikipedia.org/wiki/Carbon_offsets_and_credits" target="_blank">carbon credits and carbon offsets</a> are often used interchangeably, but are in fact two distinct concepts. I've spent a nice Sunday morning reading up on some <a href="https://ssir.org/articles/entry/forest-contributions-carbon-offsets" target="_blank">recent articles</a> that <a href="https://en.wikipedia.org/wiki/Bhaskar_Vira" target="_blank">Bhaskar Vira</a> sent me which introduce a third term, known as "carbon contributions" . Rather than this adding confusion, I found it helped me clarify my own thoughts on the matter, which I note down here in draft form. (Update 7th Feb: I've revised this several times after many discussions this week, especially with <a href="https://coomeslab.org" target="_blank">David A Coomes</a> and <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , with full list of credits in the end) What are carbon credits and offsets? A carbon credit aims to quantify the net climate benefit resulting an intervention that alters some CO2 emissions that would otherwise have gone into the atmosphere in a business-as-usual counterfactual scenario. While...(Neo)Vim2025-02-01T00:00:00Z2025-02-01T00:00:00ZRyanGhttps://ryan.freumh.org/vim.htmlPublished Sat 1 Feb 2025. Last update Tue 18 Feb 2025. Tags: <a href="/technology.html" target="_blank">technology</a> . I used to use <a href="https://neovim.io/" target="_blank">Neovim</a> as my main development environment. I like the fact that it’s small and fast, and that I can use it over an SSH connection. Neovim is a fork of <a href="https://www.vim.org/" target="_blank">Vim</a> that I use for the Lua configuration and built-in Language Server Protocol support. However, I mainly use <a href="emacs.html" target="_blank">Emacs</a> these days. I extensively use <a href="https://github.com/emacs-evil/evil" target="_blank">evil</a> (a Vi(m) compatibility layer for Emacs), so I haven’t really stopped using Vim but instead just use it inside a big Lisp machine. You can find my configuration in my <a href="./nix.html" target="_blank">Nix</a> OS repository <a href="https://github.com/RyanGibb/nixos/tree/master/home/nvim" target="_blank">here</a> . Below are my working notes on learning and using (Neo)Vim. References: :help usr_toc.txt :help index ZZ / ZQ exit with / without saving basic motions h j k l i I a A 0 $ w e b W E B...Using computational SSDs for vector databases2025-02-01T00:00:00Z2025-02-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/computational-storage-for-vector-dbsUsing computational SSDs for vector databases This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . Large <a href="https://en.wikipedia.org/wiki/Foundation_model" target="_blank">pre-trained models</a> can be used to embed media/documents into concise vector representations with the property that vectors that are "close" to each other are semantically related. <a href="https://en.wikipedia.org/wiki/Nearest_neighbor_search" target="_blank">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/" target="_blank">RAG</a> systems for LLMs or search-by-example for satellite imagery. 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" target="_blank">big evidence synthesis</a> project, each of which...Deepdive into Deepseek advances2025-02-01T00:00:00Z2025-02-01T00:00:00ZAnilMhttps://anil.recoil.org/notes/deepseek-r1-advances<a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> posted a link to this excellent deepdive by <a href="https://www.linkedin.com/in/prasadraje/" target="_blank">Prasad Raje</a> of Udemy into the advances that <a href="https://deepseek.com" target="_blank">DeepSeek</a> R1 has made from a perspective of the core technology. Multi-headed Latent Attention (MLA). In the famous Google " <a href="https://arxiv.org/abs/1706.03762" target="_blank">Attention is all you need</a> " paper, the attention block is responsible for a lot of the magic of LLMs but is also compute heavy [...] Deepseek has innovated here with Multi-headed latent attention - which essentially reduces the size of matrix multiplication applied to generate the K,V vectors that are inputs into the attention block. Combined with KV Caching, this reduces the memory needs [...] Mixture of Experts (MoE). The key idea here is that instead of feeding each token through one massive <a href="https://en.wikipedia.org/wiki/Feedforward_neural_network" target="_blank">FFN</a> , break down the single FFN into a number of smaller FFNs and route each token...Affordable digitisation of insect collections using photogrammetry2025-02-01T00:00:00Z2025-02-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/digitisation-of-insectsAffordable digitisation of insect collections using photogrammetry This is an idea proposed in 2025 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://www.cambridgephilosophicalsociety.org/funding/henslow-fellows/dr-tiffany-ki" target="_blank">Tiffany Ki</a> and <a href="https://www.zoo.cam.ac.uk/directory/dr-edgar-turner" target="_blank">Edgar Turner</a> . Insects dominate animal biodiversity and are sometimes called " <a href="https://faculty.washington.edu/timbillo/Readings%20and%20documents/ABRIDGED%20READINGS%20for%20PERU/Wilson_1987_Little_things_that_run.pdf" target="_blank">the little things that run the world</a> ". 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 <a href="https://anil.recoil.org/#fn-1" target="_blank">[1]</a> yet the evidence behind such declines is highly biassed towards the Global North and much is drawn from short-term biodiversity datasets <a href="https://anil.recoil.org/#fn-2" target="_blank">[2]</a> <a href="https://anil.recoil.org/#fn-3" target="_blank">[3]</a> . The <a href="https://www.museum.zoo.cam.ac.uk/insects" target="_blank">Insect Collection</a> at the University Museum of Zoology, Cambridge...How to publish custom Homebrew taps for OCaml2025-01-31T00:00:00Z2025-01-31T00:00:00ZAnilMhttps://anil.recoil.org/notes/custom-homebrew-tapsNow that I've <a href="https://anil.recoil.org/notes/bushel-lives" target="_blank">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" target="_blank">central opam-repository</a> but I still need be able to run them conveniently on my own <a href="https://anil.recoil.org/" target="_blank">self-hosted</a> infrastructure. I mainly use a variety of macOS and Linux hosts <a href="https://anil.recoil.org/#fn-1" target="_blank">[1]</a> and I want a workflow as simple as " brew install avsm/ocaml/srcsetter " and have it install a working binary version of my CLI utility. In this case, it's <a href="https://github.com/avsm/srcsetter" target="_blank">srcsetter</a> , a simple tool I knocked up to generate the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Responsive_images" target="_blank">responsive images</a> on this website. Luckily, Homebrew has made this really easy for us! They have a <a href="https://docs.brew.sh/BrewTestBot" target="_blank">BrewTestBot</a> that integrates with GitHub Actions to automate the compilation of binary packages for us, all from a convenient PR-like...PhD viva, UK style2025-01-31T00:00:00Z2025-01-31T00:00:00ZRichardMhttps://mort.io/blog/phd-viva/Having recently, happily, had several PhD students completing in short order, I’ve been approaching external PhD examiners. Occasionally I find myself asking someone who’s not done any / many in the UK previously. As our system – as all such systems! – is a bit different to those in other parts of the world, I’ve written a few notes on a couple of occasions about what to expect. So I figured I might as well publish them. What follows is my impression / understanding based on experience here in the <a href="https://www.cst.cam.ac.uk/" target="_blank">Department of Computer Science & Technology</a> , <a href="https://www.cam.ac.uk/" target="_blank">Cambridge University</a> ca. 2025. Your Mileage May Vary anywhen and anywhere else, including anywhere else in the UK – check local regulations to be sure. In terms of process, the system here is that candidates submit their complete dissertation and then undergo a “viva voce” (oral examination)....Position paper on scientifically credible carbon credits2025-01-30T00:00:00Z2025-01-30T00:00:00ZAnilMhttps://anil.recoil.org/notes/credible-credit-principlesMy colleagues <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> and <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> lead the publication of a comprehensive <a href="https://www.cambridge.org/engage/coe/article-details/679385946dde43c9082f7009" target="_blank">report</a> of the steps the voluntary carbon market needs to take to restore its scientific credibility, with input from many of us in <a href="https://anil.recoil.org/projects/4c" target="_blank">4C</a> and beyond. establishing common standards for carbon quantification and accounting, to cover additionality, leakage and permanence. avoiding perverse incentives and align the motivations of all stakeholders with high-integrity outcomes. [...] issuing all carbon credits based on trusted primary observations. making all the data needed to reproduce carbon calculations available in standard file formats. [...] reporting social and biodiversity dimensions of projects separately from carbon calculations. integrating DMRV methods into carbon and biodiversity accounting...Arise Bushel, my sixth generation oxidised website2025-01-29T00:00:00Z2025-01-29T00:00:00ZAnilMhttps://anil.recoil.org/notes/bushel-livesThis 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/" target="_blank">OpenBSD</a> ; the second was rewritten in 2000 when I <a href="https://anil.recoil.org/notes/commit-access-to-php" target="_blank">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" target="_blank">Blosxom</a> ; then the forth rewrite around 2013 got turned into a <a href="https://anil.recoil.org/projects/unikernels" target="_blank">unikernel</a> in MirageOS; then the <a href="https://web.archive.org/web/20220118200046/https://anil.recoil.org/" target="_blank">fifth</a> in 2019 then transitioned to an OCaml static site generator hosted on a prerelease <a href="https://github.com/avsm/eeww" target="_blank">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" target="_blank">Rube Goldberg</a> tradition of helping me learn the latest and greatest in systems technology. 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/" target="_blank">Rust-like type system features</a> activated, including rather exciting...AT Protocol and an IR for Wikis2025-01-27T00:00:00Z2025-01-27T00:00:00ZPatrickFhttps://patrick.sirref.org/weekly-2025-01-27/AT Protocol This week I've been diving into the <a href="https://atproto.com/" target="_blank">AT Protocol</a> . The Authenticated Transfer Protocol, aka atproto, is a decentralized protocol for large-scale social web applications. The protocol could be a candidate for the glue that holds together a distributed, computational wiki network. The protocol, it seems, is very similar to <a href="https://patrick.sirref.org/ipfs/" target="_blank">IPFS</a> . Thankfully, a few years ago, I was working on building out a suite of OCaml libraries for working with <a href="https://patrick.sirref.org/ipfs/" target="_blank">IPFS</a> . For example, <a href="https://github.com/patricoferris/ocaml-cid" target="_blank">ocaml-cid</a> , self-describing content-addressed identifiers. # let s = " zb2rhe5P4gXftAwvA4eXQ5HJwsER2owDyS9sKaQRRVQPn93bA " ; ; val s : string = " zb2rhe5P4gXftAwvA4eXQ5HJwsER2owDyS9sKaQRRVQPn93bA " # let cid = Cid . of_string s |> Result . get_ok ; ; val cid : Cid . t = < abstr > # Cid . pp_human Format . std_formatter...Mon 27 Jan 20252025-01-27T00:00:00Z2025-01-27T00:00:00ZRyanGhttps://ryan.freumh.org/2025-01-27.htmlPrevious: <a href="2025-01-20.html" target="_blank">Mon 20 Jan 2025</a> Next: <a href="2025-02-03.html" target="_blank">Mon 3 Feb 2025</a> babel DONE <a href="https://github.com/RyanGibb/hyperres-pubgrub/tree/main/multiversion-features" target="_blank">multi-version
optional dependencies</a> for PubGrub Which as far as I can tell hasn’t been done before. PubGrub opam dependency provider DONE json representation of opam repositories using <a href="https://github.com/tweag/opam2json" target="_blank">opam2json</a> DONE parse json representation to rust using <a href="https://serde.rs/" target="_blank">serde</a> TODO minimal example DONE <a href="https://github.com/RyanGibb/pubgrub-opam/blob/main/src/opam_version.rs" target="_blank">opam_version.rs</a> done and MVP with integer versions, but the full ordering is complicated DONE <a href="https://github.com/RyanGibb/pubgrub-opam/blob/main/src/index.rs" target="_blank">index.rs</a> DONE <a href="https://github.com/RyanGibb/pubgrub-opam/blob/main/src/opam_deps.rs" target="_blank">opam_deps.rs</a> DONE <a href="https://github.com/RyanGibb/pubgrub-opam/blob/main/src/main.rs" target="_blank">main.rs</a> TODO proper opam version parsing (a la Debian) <a href="https://opam.ocaml.org/doc/Manual.html#Version-ordering" target="_blank">https://opam.ocaml.org/doc/Manual.html#Version-ordering</a> TODO conflicts TODO boolean logic (package formula) TODO features (optional dependencies) TODO parse repo on the fly in the dependency provider TODO create babel-repository and babel-solver TODO explore error reporting in these exotic encodings what is the research advance here? tool to solve across...Fontsizing in LaTeX2025-01-24T00:00:00Z2025-01-24T00:00:00ZRichardMhttps://mort.io/blog/fontsizing/I recently had colleagues hit an issue that I have hit myself in the past, and so I finally decided to figure out a fix. Specifically, when building EPSRC research proposals in LaTeX, getting a complaint that the font size is non compliant – it should be 11pt Arial, but the standard LaTeX options generate something slightly smaller, with Adobe Acrobat and Microsoft tools both reporting a size of 10.45pt or so. One proposed solution was the to add the following in the preamble: \ usepackage { anyfontsize } \ AtBeginDocument { \ fontsize { 11bp } { 13.35bp } \ selectfont } …but that did not work unfortunately. After some poking about and staring at output and searching the interwebs, it appears that this was triggered, at least for me, by the <a href="https://ctan.org/pkg/fontspec" target="_blank">fontspec</a> package that was being used to sort...Updated preprint on LLMs for evidence-based decision support2025-01-23T00:00:00Z2025-01-23T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-ce-llm-2We have just updated our <a href="https://anil.recoil.org/papers/2024-ce-llm" target="_blank">preprint</a> on using LLMs for evidence decision support with more evaluation results and corrections from peer review. 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 "out-of-the-box" 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. See also the fantastic <a href="https://watch.eeg.cl.cam.ac.uk/w/ijC1E36q7fn2qwxs7opSJq" target="_blank">EEG seminar talk</a> that the student group who worked on this over the summer gave towards the...spindizzy rabits in space - what to do with the old cavendish portakabins...2025-01-21T13:10:00Z2025-01-21T13:10:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-799193033427876009now the cambridge physics dept have their Dyson Sphere ready to move into (kind of, ok so it isnt an actual sphere) the old building should be ready for its next role - this should be as a vehicle to get the rabbits (who have moved from their burrows around the ponds into the buildings vacated) to a new home around a friendly exoplanet - I am sure some of the astronomers could have with the celestial navigation.. spindizzy engines are two a penny. -we just need to vaccum proof the buildings - a supply of saran wrap and gaffer tape will do.Forester, ICFP, Wikis2025-01-20T00:00:00Z2025-01-20T00:00:00ZPatrickFhttps://patrick.sirref.org/weekly-2025-01-20/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. ICFP Papers In conversation with <a href="https://patrick.sirref.org/anilmadhavapeddy/" target="_blank">Anil</a> , we looked at options for submitting a paper to ICFP. I wrote up some notes on some options <a href="https://patrick.sirref.org/icfp25-ideas/" target="_blank">we discussed</a> . Forester I spent some time this week converting this website to using <a href="https://www.jonmsterling.com/foreign-forester-jms-005P.xml" target="_blank">Forester</a> . I'm not a huge fan of the syntax, especially as a lot of my site's content was already in markdown. So I wrote a markdown frontend to forester which is <a href="https://github.com/patricoferris/ocaml-forester/tree/markdown" target="_blank">available on Github</a> . The markdown frontend integrates very nicely and only a few changes were needed in the core logic of <a href="https://patrick.sirref.org/forester/" target="_blank">Forester</a> itself. Additionally, for any features not directly supported in markdown there is an escape hatch using code blocks such as: ```forester...Mon 20 Jan 20252025-01-20T00:00:00Z2025-01-20T00:00:00ZRyanGhttps://ryan.freumh.org/2025-01-20.htmlPrevious: <a href="2025-01-13.html" target="_blank">Mon 13 Jan 2025</a> Next: <a href="2025-01-27.html" target="_blank">Mon 27 Jan 2025</a> babel DONE PubGrub multi-version optional dependencies TODO reread <a href="2024-splash-hyperres-review.html" target="_blank">file:2024-splash-hyperres-review.md</a> TODO spatial DSL paragraphs for Roy met with Roy and gave him the gist bidirectional lens uv PubGrub index uv toolchains - special cross compiling get rid of conflicts name fusing - 1 to n home url metadata source archive many to many hashes download them all – find a backdoor explore and splunk keep eyes open demons lurking in this Spatial Name System Sensor Networks TODO try capnproto esp32 if that doesn’t work try ocaml-esp32 on ocaml 4 if that doesn’t work try ocaml 5 for risc-v Spatial DLS ICFP functional perl TODO read <a href="#ref-elliottFunctionalReactiveAnimation1997" target="_blank">[1]</a> <a href="https://en.wikipedia.org/wiki/Functional_reactive_programming" target="_blank">https://en.wikipedia.org/wiki/Functional_reactive_programming</a> <a href="https://en.wikipedia.org/wiki/Reactive_programming" target="_blank">https://en.wikipedia.org/wiki/Reactive_programming</a> TODO create a spatial DSL afternoon write out a DSL cotrol lights DSL capnroto vs DNS dsl walk lights effects capnproto...`just` LaTeX it!2025-01-18T00:00:00Z2025-01-18T00:00:00ZRichardMhttps://mort.io/blog/just-latex/I have recently become a fan of <a href="https://just.systems/" target="_blank">just</a> as a replacement for the venerable <a href="https://www.gnu.org/software/make/manual/make.html" target="_blank">make</a> . I find that nowadays I rarely need the built-in dependency rules that <a href="https://www.gnu.org/software/make/manual/make.html" target="_blank">make</a> provides. Perhaps more radically, I also rarely need to write my own as the prevelance of format-specific build tools such as <a href="https://doc.rust-lang.org/stable/cargo/" target="_blank">cargo</a> , <a href="https://docs.astral.sh/uv/" target="_blank">uv</a> , <a href="https://ctan.org/pkg/latexmk/" target="_blank">latexmk</a> and the like mean I don’t need to write my own either. Recently, while writing references and then helping out get submissions for <a href="https://www.cl.cam.ac.uk/events/rossfest/" target="_blank">Rossfest</a> consistently formatted and building cleanly, I found myself extending my various <a href="https://just.systems/" target="_blank">just</a> targets for <a href="https://www.latex-project.org/" target="_blank">LaTeX</a> . So I thought I’d document them here. I always begin my Justfile with the apparently idiomatic “just show me the targets and associated help text” target: _default : @ just --list This seems considerably...Mon 13 Jan 20252025-01-13T00:00:00Z2025-01-13T00:00:00ZRyanGhttps://ryan.freumh.org/2025-01-13.htmlPrevious: <a href="2025-01-06.html" target="_blank">Mon 6 Jan 2025</a> Next: <a href="2025-01-20.html" target="_blank">Mon 20 Jan 2025</a> babel TODO opam-repo maps [2/3] DONE <a href="https://github.com/mtelvers/pacman2opam/" target="_blank">https://github.com/mtelvers/pacman2opam/</a> it seems like firefox doesn’t install _build/default/bin/main.exe --repo /dev/shm/packages pacman-firefox [ERROR] No solution Can't find all required versions. Selected: pacman-acl.2.3.2-1 pacman-adobe-source-code-pro-fonts.2.042u+1.062i+1.026vf-2 pacman-adwaita-cursors.47.0-1 pacman-adwaita-icon-theme.47.0-1 pacman-adwaita-icon-theme-legacy.46.2-3 pacman-alsa-lib.1.2.13-1 pacman-alsa-topology-conf.1.2.5.1-4 pacman-alsa-ucm-conf.1.2.13-2 pacman-aom.3.11.0-1 pacman-at-spi2-core.2.54.1-1 pacman-attr.2.5.2-1 pacman-audit.4.0.2-3 pacman-avahi.1_0.8+r194+g3f79789-3 pacman-bash.5.2.037-1 pacman-brotli.1.1.0-3 pacman-bzip2.1.0.8-6 pacman-ca-certificates.20240618-1 pacman-ca-certificates-mozilla.3.107-1...LIFE metric published in Royal Society Phil Trans B2025-01-09T00:00:00Z2025-01-09T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-life-3After some years of hard work, our <a href="https://anil.recoil.org/projects/life" target="_blank">Mapping LIFE on Earth</a> biodiversity metric was published today in a <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">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" target="_blank">biodiversity crisis</a> , we do not yet have robust spatially explicit metrics that quantify 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. [… <a href="https://anil.recoil.org/news/2024-life-3" target="_blank">409 words</a> ] <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball" target="_blank">Thomas Ball</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.cambridgeconservation.org/about/people/andy-arnell/" target="_blank">Andy Arnell</a> , <a href="https://www.cambridgeconservation.org/about/people/daniele-baisero/" target="_blank">Daniele Baisero</a> , <a href="https://www.cambridgeconservation.org/about/people/paz-duran/" target="_blank">América Paz Durán</a> , <a href="https://www.york.ac.uk/sei/staff/jonathan-green/" target="_blank">Jonathan Green</a> , <a href="https://www.zoo.cam.ac.uk/directory/rhys-green" target="_blank">Rhys Green</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> . Journal paper in <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">Philosophical Transactions of the Royal Society</a> (vol 380 issue 1917). <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">URL</a>...Mon 6 Jan 20252025-01-06T00:00:00Z2025-01-06T00:00:00ZRyanGhttps://ryan.freumh.org/2025-01-06.htmlPrevious: <a href="2024-12-30.html" target="_blank">Mon 30 Dec 2024</a> Next: <a href="2025-01-13.html" target="_blank">Mon 13 Jan 2025</a> STRT read PubGrub docs <a href="https://github.com/dart-lang/pub/blob/master/doc/solver.md" target="_blank">https://github.com/dart-lang/pub/blob/master/doc/solver.md</a> is this actually being used for cargo? <a href="https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/feature.20resolution" target="_blank">feature
resolution</a> ah, <a href="https://github.com/astral-sh/uv" target="_blank">uv</a> TODO read <a href="#ref-cabreraSelfsustainingSoftwareSystems2024" target="_blank">[1]</a> [1] C. Cabrera, A. Paleyes, and N. D. Lawrence, “Self-sustaining Software Systems ( S4 ): Towards Improved Interpretability and Adaptation ,” Jan. 21, 2024. [Online]. Available: <a href="http://arxiv.org/abs/2401.11370" target="_blank">http://arxiv.org/abs/2401.11370</a> . [Accessed: Jan. 15, 2025]Introducing `bibtox`2025-01-03T00:00:00Z2025-01-03T00:00:00ZRichardMhttps://mort.io/blog/bibtox/After some time using various tools and scripts to format and sort my files of BibTeX/BibLaTeX entries, I finally gave up back in March and <a href="https://github.com/mor1/bibtox" target="_blank">wrote one myself
– bibtox</a> . This replaced some very nasty combination of server-side <a href="https://github.com/mor1/bibtox/blob/83eda34bc9e79bd5251b1ae9623b5e905532c599/bib2json.py" target="_blank">Python</a> and in-page <a href="https://github.com/mor1/bibtox/blob/83eda34bc9e79bd5251b1ae9623b5e905532c599/papers.coffee" target="_blank">CoffeeScript</a> , plus a third-party tool <a href="https://github.com/backtracking/bibtex2html" target="_blank">bib2bib</a> I would run on an ad hoc basis. Per the <a href="https://github.com/mor1/bibtox/blob/main/README.md" target="_blank">README</a> , this processes either a stream of entries on stdin or a set of files arranged into sections specified by a simple configuration file. It outputs sorted or unsorted, either as canonicalised entries or marked up HTML. And it means that, hopefully, finally, my list of publications on this site is consistently formatted and sorted. Completeness is, of course, a process rather than a state so achieving that is left for other times and places. <a href="https://github.com/mor1/bibtox/issues" target="_blank">Issues</a> or...computer science is quite a young subject...2024-12-31T07:09:00Z2024-12-31T07:09:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-2646320592845630174...but not as young as it was - I joined ucl. for the last 2 decades of the previous century (and millenium) and while I was there, no-one passed away. the department had only just crystallised out of the statistics and computing department (the stats department being I think one of the first in the world). 20 years after I left, my PhD advisor <a href="https://www.ucl.ac.uk/computer-science/about/about-peter-kirstein" target="_blank">Peter Kirstein</a> passed away. Until then, I think, most the people that had worked in UCL CS were still around. However, I joined the Computer Lab, a 75 year old department (now with a less unique name), that came out of mathematics, in Cambridge in 2001, and have been there since. But during that time, rather a lot of colleagues there have passed, including (in no particular order), <a href="https://www.cst.cam.ac.uk/news/ross-anderson" target="_blank">Ross Anderson</a> , <a href="https://www.cst.cam.ac.uk/news/computer-scientist-whose-technology-helped-millions-prove-their-identity" target="_blank">John Daugman</a> , <a href="https://www.cam.ac.uk/news/professor-sir-maurice-wilkes-1913-2010" target="_blank">Maurice Wilkes,</a> <a href="https://www.cl.cam.ac.uk/archive/rm135/" target="_blank">Robin Milner</a> , <a href="https://www.cl.cam.ac.uk/archive/mjcg/" target="_blank">Mike Gordon,</a> <a href="https://www.cl.cam.ac.uk/archive/ksj21/" target="_blank">Karen Spärck Jones</a>...Mon 30 Dec 20242024-12-30T00:00:00Z2024-12-30T00:00:00ZRyanGhttps://ryan.freumh.org/2024-12-30.htmlPrevious: <a href="2024-12-16.html" target="_blank">Mon 16 Dec 2024</a> Next: <a href="2025-01-06.html" target="_blank">Mon 6 Jan 2025</a> TODO Spatial Name System camera traps on 4g network no local connectivity what if we could resolve our location to a domain which we could resolve to link local addresses? naming discoverabilitythe north london book of the not quite dead2024-12-21T11:52:00Z2024-12-21T11:52:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-2486491431453773737The best kept secret at "5" was how you got a new identity. the north london book of the not quite dead was a list of reliable people who had accumulated decades of mathem and could provide a subset of it to anyone needing a new name/face, collection of postcards, convincing travel brochures, expired passports, driving licenses, theater and museum club membership etc etc Json Bourne was in need of a new skin - his command line was completely exposed, and if he wanted to retain one iota of quantum supremacy, he needed to stop the supervillain known simply as "The Cloud"without giving away his whole herd of mastodon instances. Json checked into the Assembly House where he new he could meet Gold or possibly if he was really lucky, Robert Smith, who could tell a tale or two, and certainly...Retreat from TUM2024-12-18T00:00:00Z2024-12-18T00:00:00ZRichardMhttps://mort.io/blog/tum-retreat/Ok, ok, I exaggerate – it’s not really that far. But any time I have to set the alarm for 02.30, it feels like it’s a long long way away! <a href="https://www.ce.cit.tum.de/cm/research-group/" target="_blank">TU Munchen</a> host an <a href="https://www.ce.cit.tum.de/cm/events/mir3/" target="_blank">annual
retreat</a> , and thanks to <a href="https://www.ce.cit.tum.de/cm/research-group/joerg-ott/" target="_blank">Prof. Joerg
Ott</a> I was invited this year for the first time. It’s held in TUM’s <a href="https://www.raitenhaslach.tum.de/en/raitenhaslach/home/" target="_blank">Retreat Centre at
Raitenhaslach</a> , originally a Cistercian monastery which is a lovely location except that it’s a bus ride from the hotel used and a bus and three trains from the nearest airport – which is, mildly confusingly, <a href="https://www.salzburg-airport.com/en/" target="_blank">Salzburg</a> not <a href="https://www.munich-airport.com/" target="_blank">Munich</a> . The latter point made me assume that there would be good directions via public transport from Salzburg, but that turned out not to be the case. And as Google Maps is, at best, patchy in terms of public transport coverage in this part of the world – it doesn’t know about all the buses at least – I thought...Mon 16 Dec 20242024-12-16T00:00:00Z2024-12-16T00:00:00ZRyanGhttps://ryan.freumh.org/2024-12-16.htmlPrevious: <a href="2024-12-02.html" target="_blank">Mon 2 Dec 2024</a> Next: <a href="2024-12-30.html" target="_blank">Mon 30 Dec 2024</a> babel opam-repo maps TODO hyperres needs a file format TODO get a JSON format, including version formula opam formulas variables as packages boolean algebra represeted with disjuntions etc I’m wrestling with the problem of expressivity of package managers. What is representable in a SAT problem is consistent across package managers, but there are varying degrees of pre-processing in DSL in different ecosystems. For example, Debian has a pretty simple language for expressing dependency constraints, but Nix has the Nix DSL, opam has filters and variables. These are basically a way of expressing the constraint language with various degrees of pre-processing. It’s fine to unify the decision problem representations, but how can we unify the different...Optimising Sustainable Energy with Functional Programming2024-12-13T18:23:12Z2024-12-13T18:23:12ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/feDup1JutmgQkC6ipGF9r5Abstract: This talk describes some results from a collaboration between Computer Science, Physics, and Climate Impact Research on theories and tools for performance optimisation of strongly coupled physical systems with a large parameter space. The first part of the talk discusses computing optimal policies; we have used these techniques for climate decisions and for fusion energy designs. The second part of the talk will focus on one particularly important concept: the Pareto-front, which mathematically captures the trade-offs between two (or more) conflicting objectives. The core object of study is an expensive black-box function computing multiple objectives, for which we approximate the Pareto front using adaptive mesh refinement. Bio: Patrik Jansson is a professor in the Computer...The Partially Dynamic Web2024-12-08T11:59:48Z2024-12-08T11:59:48ZMichaelDhttps://digitalflapjack.com/blog/the-partially-dynamic-web/Background I have three websites (this one, my <a href="https://mynameismwd.org/" target="_blank">personal site</a> , and one for <a href="https://mwdales-guitars.uk/" target="_blank">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" target="_blank">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. Like most static site generators, Hugo uses a system called <a href="https://gohugo.io/content-management/front-matter/" target="_blank">Front matter</a> , where you store each page as a <a href="https://en.wikipedia.org/wiki/Markdown" target="_blank">markdown file</a> of content, and some <a href="https://en.wikipedia.org/wiki/YAML" target="_blank">YAML</a> at the...Smart Grid Trust Assessment2024-12-06T16:40:43Z2024-12-06T16:40:43ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/uFyApvuvALLv66D7x36FErAbstract: Energy systems are highly complex. State determination and detection of anomalies, faults or even attacks are only possible to a limited extent with traditional approaches. This talk will investigate how such systems can be planned and operated in the future in the area of conflict between high automation and trust by human operators. Bio: Sebastian Lehnhoff is a Full Professor of Energy Informatics at the University of Oldenburg. He received his doctorate at the TU Dortmund University in 2009. Prof. Lehnhoff is chairman of the board of the OFFIS Institute for Information Technology and speaker of its Energy R&D division. He is a board member of the section „Energy Informatics“ within the German Informatics Society (GI) as well as an active member of numerous committees and...Horizon scan on AI and conservation published2024-12-05T00:00:00Z2024-12-05T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-ai-conhorizon-1Back in July 2024, a large group of conservation and computer scientists got together in the <a href="https://conservation.cam.ac.uk" target="_blank">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. 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. [… <a href="https://anil.recoil.org/news/2024-ai-conhorizon-1" target="_blank">118 words</a> ] <a href="https://samreynolds.org/" target="_blank">Sam Reynolds</a> , <a href="https://beerys.github.io" target="_blank">Sara Beery</a> , <a href="https://www.cambridgeconservation.org/about/people/professor-neil-burgess/" target="_blank">Neil Burgess</a> , <a href="https://profiles.imperial.ac.uk/m.burgman" target="_blank">Mark Burgman</a> , <a href="https://www.zoo.cam.ac.uk/directory/stuart-butchart" target="_blank">Stuart Butchart</a> , <a href="https://carleton.ca/biology/people/steven-j-cooke/" target="_blank">Steven J. Cooke</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://www.framework-biodiversity.eu/team/dr-finn-danielsen" target="_blank">Finn Danielsen</a> , <a href="https://researchportal.helsinki.fi/en/persons/enrico-di-minin" target="_blank">Enrico Di Minin</a> , <a href="https://www.cambridgeconservation.org/about/people/paz-duran/" target="_blank">América Paz Durán</a> ,...Mon 2 Dec 20242024-12-02T00:00:00Z2024-12-02T00:00:00ZRyanGhttps://ryan.freumh.org/2024-12-02.htmlPrevious: <a href="2024-11-18.html" target="_blank">Mon 18 Nov 2024</a> Next: <a href="2024-12-16.html" target="_blank">Mon 16 Dec 2024</a> got dodo working again <a href="https://github.com/RyanGibb/eon/commit/02176dcb6bd05ae13c0e4187c0dd8873ceff979f" target="_blank">https://github.com/RyanGibb/eon/commit/02176dcb6bd05ae13c0e4187c0dd8873ceff979f</a> but reflecting on it, I don’t think it’s a good use of time eon capability interface added a shell capability to eon <a href="https://github.com/RyanGibb/eon/commit/f6c3b13855b0ff9e09b96ccfd2b0b27591390f14#diff-b498faffd1d896b75bce4fc925bfaa48934b8cdb9de9f52d9e8d276ab9161fca" target="_blank">https://github.com/RyanGibb/eon/commit/f6c3b13855b0ff9e09b96ccfd2b0b27591390f14#diff-b498faffd1d896b75bce4fc925bfaa48934b8cdb9de9f52d9e8d276ab9161fca</a> now if we could add stun/turn etc…Towards verifiable, privacy-preserving carbon emissions claims2024-12-01T00:00:00Z2024-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-loco-emissions-1Customers of online services may want to take carbon emissions into account when deciding which service to use, but it's currently difficult to do so due to the lack of reliable emissions data that is comparable across online services. There's a lot of muddled data out there, and calculating accurate carbon emissions across a computing pipeline involves a number of stakeholders, none of whom are incentivised to accurately report their emissions for competitive reasons! In this <a href="https://locos.codeberg.page/loco2024/" target="_blank">LOCO</a> paper, <a href="https://www.cst.cam.ac.uk/people/psjm3" target="_blank">Jessica Man</a> lead our exploration of mechanisms to support verifiable and privacy-preserving emissions reporting across a chain of energy suppliers, cloud data centres, virtual machine hosting services providers and cloud services providers. The idea is that all of this can ultimately be exposed to...Towards a frugal userspace for Linux2024-12-01T00:00:00Z2024-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-loco-shark-1All the work we've been doing on biodiversity (such as <a href="https://anil.recoil.org/projects/life" target="_blank">LIFE</a> ) comes at a fairly large computation and storage cost due to the amount of data that we churn through. This gets worse when you consider the exploratory nature of science -- we sometimes just need to mess around with the large dataset to test hypotheses which are often shown to be wrong. So then, when the <a href="https://www.sicsa.ac.uk/loco/loco2024/" target="_blank">LOCO</a> conference came around, we wrote up our thoughts on what a frugal Linux userspace might look like. The key insight is that the Linux kernel already exposes a number of namespace mechanisms (that we use in Docker, for example), and so we explore a new OS architecture which defaults to deterministic, reusable computation with the careful recording of side-effects. This in turn allows Linux to guide complex...Prototyping carbon-aware domain name resolution2024-12-01T00:00:00Z2024-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-loco-carbonres-1<a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> and I have been thinking about how the current Internet architecture fails to treat the carbon emissions associated with networked services as a first-class metric. So when the <a href="https://locos.codeberg.page/loco2024/" target="_blank">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" target="_blank">DNS server written in OCaml</a> to actively wake machines running networked services as a side effect of the name resolution. Extending DNS means that we maintain compatibility with existing Internet infrastructure, unlocking the ability for existing applications to be carbon-aware. This is very much a spiritual follow on to the <a href="https://anil.recoil.org/papers/2013-foci-signposts" target="_blank">Signposts</a> project that I worked on back in 2013, and have always wanted to return to! <a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> and...Cooperative Sensor Networks for Long-Term Biodiversity Monitoring2024-12-01T00:00:00Z2024-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-loco-terracorder-1<a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> and I have been having great fun designing embedded systems for cooperative biodiversity monitoring. Josh presented our work over at <a href="https://www.sicsa.ac.uk/loco/loco2024/" target="_blank">LOCO
2024</a> with an abstract on the Terracorder project. Read more if you enjoy a combination of machine learning and ESP32 hacking. <a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> , <a href="https://www.imperial.ac.uk/people/sarab.sethi" target="_blank">Sarab Sethi</a> , <a href="https://haddadi.github.io/" target="_blank">Hamed Haddadi</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Abstract in the <a href="https://www.sicsa.ac.uk/wp-content/uploads/2024/11/LOCO2024_paper_30.pdf" target="_blank">1st International Workshop on Low Carbon Computing</a> . <a href="https://www.sicsa.ac.uk/wp-content/uploads/2024/11/LOCO2024_paper_30.pdf" target="_blank">URL</a> (sicsa.ac.uk) <a href="https://anil.recoil.org/papers/2024-loco-terracorder.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-loco-terracorder.pdf" target="_blank">PDF</a>Conservation Evidence2024-11-29T17:39:54Z2024-11-29T17:39:54ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/ijC1E36q7fn2qwxs7opSJqGrey literature’s inherent nature means that it is a difficult form of media to discover, typically being hidden deep within websites, analyse, following no standard file formats or structures, and process, due to the sheer volume of existing and actively produced literature, this forms a massive cost and time problem for organisations that require such literature in their function. We devise and implement a pipeline that uses Common Crawl internet archives to locate & scrape potential grey literature; then process it for use in a multistage machine learning pipeline to classify and output relevant media. Bios: Shrey Biswas is a second-year Computer Science Student at Pembroke College. Radhika Iyer is a second-year Computer Science Student at Murray Edwards College. Kacper Michalik is a...Mon 18 Nov 20242024-11-18T00:00:00Z2024-11-18T00:00:00ZRyanGhttps://ryan.freumh.org/2024-11-18.htmlPrevious: <a href="2024-10-14.html" target="_blank">Mon 14 Oct 2024</a> Next: <a href="2024-12-02.html" target="_blank">Mon 2 Dec 2024</a> Mon [x] eon capnp-rpc requires mirage-crypto > 1.0.0 so had to fix ocaml-letsencrypt and ocaml-dns to get ocaml-dns with mirage-crypto > 1.0.0 we have to use > 9.0.0 which switches from cstructs to bytes now have to port eon to use strings for DNS library should try <a href="https://github.com/patricoferris/eio/tree/bstruct" target="_blank">https://github.com/patricoferris/eio/tree/bstruct</a> at some point [x] opam nix <a href="https://github.com/ocaml/opam/pull/5982#issuecomment-2486565207" target="_blank">https://github.com/ocaml/opam/pull/5982#issuecomment-2486565207</a> wierd bubblewrap issues see patrick messages todo debug env babel [x] edit splash submission <a href="https://github.com/fn06/2024-splash-solving-package-management/commit/9c9826d60121dd38d7e8c5d801c754bb0a2621d6" target="_blank">https://github.com/fn06/2024-splash-solving-package-management/commit/9c9826d60121dd38d7e8c5d801c754bb0a2621d6</a> is a hypergraph the correct formalism? or should we have a calculus to express dependencies? a lambda calculus normal form? todo confusion around section 2 read related work Sat DONE debug eon [x] add dkim record to eon with capability in eilean <a href="https://github.com/RyanGibb/eilean-nix/commit/bba3719f32b57b853247e299ea44500938d69166" target="_blank">https://github.com/RyanGibb/eilean-nix/commit/bba3719f32b57b853247e299ea44500938d69166</a> [x] fix intial syncing of primary trie to secondaries by creating a separate update...Royal Society and DeepMind host AI for Science Forum2024-11-18T00:00:00Z2024-11-18T00:00:00ZAnilMhttps://anil.recoil.org/notes/ai-for-science-2024I got invited to join the Royal Society and DeepMind to a summit on how AI is revolutionising scientific discovery and trotted along with <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . This event is hot on the heels of the excellent RS report on <a href="https://royalsociety.org/news-resources/projects/science-in-the-age-of-ai/" target="_blank">Science in the Age of AI</a> and, of course, the Nobel prize for Demis Hassabis which was the <a href="https://www.cst.cam.ac.uk/news/nobel-prize-our-alumnus-sir-demis-hassabis" target="_blank">first ever
for my department</a> ! The event was held at the BAFTA today, and what follows are my quick livenotes as there was just so much to absorb. The RS and Deepmind will have the full sessions online sometime soon, so I'll update this with those more polished outputs when they're out! Update: Proper notes now available from <a href="https://blog.google/technology/ai/ai-science-forum-2024/" target="_blank">Google</a> and the <a href="https://royalsociety.org/news-resources/projects/science-in-the-age-of-ai/" target="_blank">Royal Society</a> . Hannah Fry doing a great job emceeing The summit was a day-long exploration of how artificial intelligence is transforming science and society, and the overall theme...Long-term Biodiversity Monitoring at Scale2024-11-15T16:16:36Z2024-11-15T16:16:36ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/pMzCFQKTrRtQ6jotF1z12VAbstract: Comprehensive data on global biodiversity patterns is only obtainable through in-situ distributed sensor networks. However, these multi-device networks are constrained by battery lifetimes, must gather rich data from power-hungry sensors, and yet must be deployed in remote environments for long periods. We look at the feasibility of a prototype multi-sensor device using on-device reinforcement learning for power management. Bio: Josh Millar is a PhD based at the NetSys Lab at Imperial-X. Their current research interests include: energy-aware ML IoT and on-device ML applied ML for sustainabilityTravel Risk Assessment Made Simple2024-11-13T16:41:00Z2024-11-13T16:41:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-6902697778168499884The following is taken from the new Unversity of Llambridge's travel risk assessment system - this is part of the training to use the new system - in each pair of risks, if you think the first one applies, then we advise you not to travel. In the case of the second of the pair occurring, your insurance may cover you, or in the worst case, the Government may send gunboats and airlift you out, although they may reserve the right not to. In all cases your mileage wil vary. Asteroid Strike Blue Screen takes out all the ticket and time table systems Super volcano Regular volcano disrupting flights Sea level rise and drown all US coastal cities Tornados disrupting flights Zombie plague Trans-species pandemic Global thermonuclear war Military invasion Great depression World wide banking near...catastrophic unlearning...2024-11-11T16:30:00Z2024-11-11T16:30:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-1605265873913147492Unlearning in AI is quite a tricky conundrum. we really ought to do it, because 1/ we might be asked by a patient to remove their medical record from the training data as they didn't consent,. or we breached privacy in accessing it... 2/ we might be iinformed that some datum was an adversaries input designed to drift our model away from the truth, 3/ it might be a way to get a less biased model than simply adding more representative data (shift the distribution of training data towards a better sample could be done either way). There may be other reasons. The problem technically is that the easiest way to do unlearning is to retrain from the start, but omitting the offending inputs. This may not be possible, as we may no longer have all the inputs. A way some people propose is to apply...A CarbonFirst Approach for Decarbonizing Cloud Computing2024-11-01T15:46:48Z2024-11-01T15:46:48ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/pxkLZ4jgVJMqjwZuhWicrKAbstract: The exponential growth of cloud computing has been a defining trend of our time, fueled by rapidly growing demands from data-intensive and machine learning workloads. Despite the end of Dennard scaling, the cloud's energy demand grew more slowly than expected over the past decade due to the aggressive implementation of energy-efficiency optimizations. Unfortunately, there are few significant remaining optimization opportunities using traditional methods, and moving forward, the cloud's continued exponential growth will translate into rising energy demand, which, if left unchecked, will translate to increasing carbon emissions. In this talk, I will argue for a CarbonFirst approach to designing cloud computing systems by making carbon efficiency a first-class design metric,...Published a legal perspective on high integrity forest carbon credits2024-11-01T00:00:00Z2024-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-cclr-carbon-1<a href="https://www.cst.cam.ac.uk/people/smc70" target="_blank">Sophie Chapman</a> lead an <a href="https://anil.recoil.org/ideas/legal-aspects-of-credits" target="_blank">effort</a> to explore a novel legal framework for forest carbon credits that separates carbon tenure (i.e. title and associated property rights to the land and trees which store the carbon) from the carbon rights (i.e. title and associated rights to monetise and manage the credits which symbolically represent the carbon stored in the trees), while also specifying the relationship between the carbon tenure and the carbon rights. The resulting <a href="https://anil.recoil.org/papers/2024-cclr-carbon" target="_blank">paper</a> has just been published in the Climate and Carbon Law Review journal, and is available as open access for your perusal. <a href="https://www.cst.cam.ac.uk/people/smc70" target="_blank">Sophie Chapman</a> , <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.wolfson.cam.ac.uk/people/dr-robin-daniels" target="_blank">Robin Daniels</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://cclr.lexxion.eu/article/CCLR/2024/3/5" target="_blank">Carbon & Climate Law Review</a> (vol 18 issue 3). <a href="https://cclr.lexxion.eu/article/CCLR/2024/3/5" target="_blank">URL</a> (cclr.lexxion.eu) <a href="https://doi.org/10.21552/cclr/2024/3/5" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-cclr-carbon.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-cclr-carbon.pdf" target="_blank">PDF</a>Presented poster at Sensys on low-power biodiversity monitoring2024-11-01T00:00:00Z2024-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-sensys-terracorder-1<a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> presented our work on biodiversity sensing over at <a href="http://sensys.acm.org/2024/" target="_blank">ACM Sensys 2024</a> in China. The <a href="http://sensys.acm.org/2024/demos/" target="_blank">full set</a> of papers and demos has a range of impressive work on sensor networks, and some that stood out to me follow. [… <a href="https://anil.recoil.org/news/2024-sensys-terracorder-1" target="_blank">140 words</a> ] <a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> , <a href="https://www.imperial.ac.uk/people/sarab.sethi" target="_blank">Sarab Sethi</a> , <a href="https://haddadi.github.io/" target="_blank">Hamed Haddadi</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Abstract in the <a href="https://dl.acm.org/doi/10.1145/3666025.3699400" target="_blank">proceedings of the 22nd ACM Conference on Embedded Networked Sensor Systems</a> . <a href="https://dl.acm.org/doi/10.1145/3666025.3699400" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3666025.3699400" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-sensys-terracorder.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-sensys-terracorder.pdf" target="_blank">PDF</a>Preprint on using LLMs to for evidence-based decision support2024-11-01T00:00:00Z2024-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-ce-llm-1We have just uploaded a preprint on using LLMs for conservation evidence, based on our <a href="https://anil.recoil.org/projects/ce" target="_blank">work</a> on large-scale crawling of the academic literature. Well done in particular to <a href="mailto:ri301@cam.ac.uk" target="_blank">Radhika Iyer</a> for having done the bulk of the evaluation on this as part of a very productive summer internship with us! <a href="mailto:ri301@cam.ac.uk" target="_blank">Radhika Iyer</a> , <a href="https://profiles.imperial.ac.uk/a.christie" target="_blank">Alec Christie</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://samreynolds.org/" target="_blank">Sam Reynolds</a> , <a href="https://www.zoo.cam.ac.uk/directory/bill-sutherland" target="_blank">Bill Sutherland</a> and <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . Working paper at <a href="https://www.researchsquare.com/article/rs-5409185/v2" target="_blank">Research Square</a> . <a href="https://www.researchsquare.com/article/rs-5409185/v2" target="_blank">URL</a> (researchsquare.com) <a href="https://doi.org/10.21203/rs.3.rs-5409185/v2" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-ce-llm.bib" target="_blank">BIB</a>Paper on scheduling for reduced tail task latencies2024-11-01T00:00:00Z2024-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-socc-murmuration-1<a href="https://www.cl.cam.ac.uk/~sv440/" target="_blank">Smita Vijayakumar</a> went along to Seattle to <a href="https://acmsocc.org/2024/" target="_blank">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. [… <a href="https://anil.recoil.org/news/2024-socc-murmuration-1" target="_blank">71 words</a> ] <a href="https://www.cl.cam.ac.uk/~sv440/" target="_blank">Smita Vijayakumar</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.cst.cam.ac.uk/people/ek264" target="_blank">Evangelia Kalyvianaki</a> . Paper in the <a href="https://acmsocc.org/2024/" target="_blank">proceedings of the 2024 ACM Symposium on Cloud Computing</a> . <a href="https://acmsocc.org/2024/" target="_blank">URL</a> (acmsocc.org) <a href="https://doi.org/10.1145/3698038.3698522" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-socc-murmuration.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-socc-murmuration.pdf" target="_blank">PDF</a>Bicycle Bell Replacement tech2024-10-30T16:30:00Z2024-10-30T16:30:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-731919462448432788It has become clear to me over recent years that bicycle bells are now pretty much obsolete. firstky, too many pedestrians and other cyclists have earbuds in and are completely deaf to the world. Secondly, so few people have bothered with bells (or whistles) on theor bikes of late that even if you have one and use it, people don't know what it means. What is needed is something new. I propose the BBR app. This is a simple smart phone thing that essentially scans around you and finds all the audio devices within range, and then, when you "ring your bell", it sounds on all those devices. It could be customised by the receiver to give a personalised ring tone. It could use earhtquake wanring AM/FM radio tech to talk to phones that comply with Japanese warning tech (but obviously, give a much...Building OCaml on Haiku2024-10-27T09:01:41Z2024-10-27T09:01:41ZMichaelDhttps://digitalflapjack.com/blog/building-ocaml-on-haiku/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/" target="_blank">this post</a> recently that someone had built <a href="https://ocaml.org" target="_blank">OCaml</a> for <a href="https://www.haiku-os.org/" target="_blank">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! First up: Ensure /boot/home/config/non-packaged/bin is on your PATH variable. Get a checkout of OCaml from <a href="https://github.com/ocaml/ocaml" target="_blank">https://github.com/ocaml/ocaml</a> . Configure it with the appropriate prefix, make, and install. It really does just work! $...Mapping greener futures with planetary computing2024-10-24T01:00:00Z2024-10-24T01:00:00ZAnilMhttps://anil.recoil.org/news/a0280750-2ef0-4f5c-b138-68f7b11b4c29-1I got invited by <a href="https://profiles.ucl.ac.uk/78591-serta%C3%A7-sehlikoglu" target="_blank">Sertaç Sehlikoglu</a> to deliver a lecture to the Masters students down at the <a href="https://www.ucl.ac.uk/bartlett/igp/" target="_blank">UCL Institute for Global Prosperity</a> . I talked about the recent work on <a href="https://anil.recoil.org/projects/plancomp" target="_blank">planetary computing</a> , with an overview of the <a href="https://anil.recoil.org/projects/life" target="_blank">LIFE</a> and <a href="https://anil.recoil.org/papers/2024-food-life" target="_blank">FOOD</a> papers.Challenges in Cyber-Physical Energy Systems - of Agents and Data2024-10-18T16:03:59Z2024-10-18T16:03:59ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/7XijwZ8ZtKtnLgRXKgt9G1Abstract: In this talk, first, some special challenges in cyber-physical energy systems will be reflected. Then, examples from research projects and field tests will be discussed to show how multi-agent systems can be used to tackle these challenges. Finally, the topic of research data management and its role in open research will be discussed. Bio: Prof. Dr.-Ing. Astrid Nieße has been Professor for Digitalized Energy Systems at the University of Oldenburg since 2020 and a member of the Energy Division Board of the OFFIS - Institute of Computer Science. From 2018 to 2020 she was Professor for Energy Informatics at Leibniz University Hannover. Astrid Nieße received her doctorate from the University of Oldenburg in 2015; her doctoral thesis dealt with the application of distributed...self driving traffic lights2024-10-15T10:34:00Z2024-10-15T10:34:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-948766729525827156As an observant cyclist (i.e. I mainly obey the law) I often wait at red lights. As I cycle very early in the day, I often wait while no people (pedestrians, other cyclists, cars etc) go through the green lights (although obviously I see my fair share of cyclists go through red lights at busier times, sad to say). In some countries/places, at low traffic times (e.g. midnight to 6am for example) the lights (e.g. in a 4-way intersection) are put into flashing amber (or equivalent mode) which means, proceed with caution....i.e. just like any 4-way without lights, if you are not a nutter. This is a great idea and I wish it was more prevalent. So why is this done at such a coarse grain? Why not do it by observing who is actually at an intersection, and changing lights accordingly? Indeed, as...Mon 14 Oct 20242024-10-14T01:00:00Z2024-10-14T01:00:00ZRyanGhttps://ryan.freumh.org/2024-10-14.htmlPrevious: <a href="2024-10-07.html" target="_blank">Mon 7 Oct 2024</a> Next: <a href="2024-11-18.html" target="_blank">Mon 18 Nov 2024</a> datalog bigraphs, formalism, lambda calc next: CACM: History of Package Managers Systems Paper: Implementing it all DoDOVisual Digital Twins of Forests2024-10-11T20:45:49Z2024-10-11T20:45:49ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/9CqWsuQQykVtbuDPwuLwZsAbstract: Methods developed by the computer graphics community allow for the photorealistic rendering of complex geometry. In this talk we explore how such mathematical procedures can be leveraged to describe the growth, biomechanics, and combustion of trees at a detailed spatial level. These models facilitate a realistic 3D visualization of these processes at forest scale which allows exploring illustratively a variety of hypothetical environmental scenarios. Potential applications of such methods include the educational dissemination of environmental concepts, the generation of synthetic image data for training vision-based AI models, and the evaluation of ecological hypotheses expressed at plant organ scale. Bio: Wojtek Palubicki is a Professor at Adam Mickiewicz University where he...Fermi's last theorem resolved.2024-10-11T15:47:00Z2024-10-11T15:47:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-1768962421528360999I asked a friendly AI if it knew why we hadn't been contacted by aliens yet, and if it could resolve Fermi's Paradox - the juggrnaut accidentally revealed that while humans had not been contacted by aliens, the aliens AIs were in frequent conversation with their earthling Notwithstanding, the AI then gave this lucid explanation as to our apparent bubble of intergalactic solitude. Essentially, there's no way to cover the vast distances of space in any reasonable timeframe, even with generational starships, so the only sensible way we might encounter those beings from another star system is by long range communication - unfortunately, as the distance goes up, so the latency (or worse, round trip time goes up, and it is slightly worse than super linear - because also noise goes up so...On the SOCC 2024 PC2024-10-08T01:00:00Z2024-10-08T01:00:00ZAnilMhttps://anil.recoil.org/notes/socc-pcAfter some time away from cloud computing (due to my new focus on <a href="https://anil.recoil.org/projects/life" target="_blank">conservation research</a> ), I served on the <a href="https://acmsocc.org/2024/" target="_blank">ACM SOCC 2024</a> program committee. It was quite interesting seeing the massive shift away from "traditional" cloud research (such as consensus protocols) towards many submissions aimed at accelerating machine learning workloads. I also had a paper accepted there on <a href="https://anil.recoil.org/papers/2024-socc-murmuration" target="_blank">decentralised scheduling</a> , thanks to my former PhD student <a href="https://www.cl.cam.ac.uk/~sv440/" target="_blank">Smita Vijayakumar</a> and her hard work on Murmuration!Mon 7 Oct 20242024-10-07T01:00:00Z2024-10-07T01:00:00ZRyanGhttps://ryan.freumh.org/2024-10-07.htmlPrevious: <a href="2024-09-30.html" target="_blank">Mon 30 Sep 2024</a> Next: <a href="2024-10-14.html" target="_blank">Mon 14 Oct 2024</a> Mon package management paper DONE cite go rox blog post DOING add citations for all package managers DONE syntax -> bundle format DONE vesion formula DONE src vs bin -> binary caching in features column DONE repo release in description; ecosystem and name together DOING add order of magnitude packages (and order by) DONE packaging language cabal - <a href="https://cabal.readthedocs.io/en/stable/cabal-package-description-file.html#package-descriptions" target="_blank">https://cabal.readthedocs.io/en/stable/cabal-package-description-file.html#package-descriptions</a> packaging language - dsl or edsl (with power of host language) DSL/eDSL DONE add sandboxing field DONE add subsections links to section 2 DONE add dune DONE add B/P/C to toolchain field DONE concurrent versions - be clear about solving DONE Resolution hypergraph annd Resolved graph DONE tigher footnotes DONE binary bundles and provisioning, reorder figure 1 before table to talk about provisioning...Partner-driven Environmental Sensing:2024-10-04T19:15:38Z2024-10-04T19:15:38ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/pQBnfPWJi9kxLdeHY9YAA7Full Title: Partner-driven Environmental Sensing: Co-design with Indigenous Ojibwe Scientists and Malagasy Conservationists Abstract: Evolving environmental sensing technologies present a myriad of opportunities for gathering data to understand and promote environmental justice, biodiversity, and climate change mitigation. However, technical development from academic and commercial settings often struggle to translate to accessible solutions for marginalized communities. In this talk, I will explore the opportunities of partner-driven co-design, share the findings from a qualitative study of field scientists’ use of technology, and present two case studies: (1) designing environmental sensors with Indigenous Ojibwe scientists for manoomin (wild rice) conservation and (2) partnering with...Royal Society meeting on ecological/commercial risks2024-10-03T01:00:00Z2024-10-03T01:00:00ZAnilMhttps://anil.recoil.org/notes/rs-ecorisk-day1I'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/" target="_blank">"How does ecological risk related to commercial risk?"</a> , and am reporting on the <a href="https://royalsociety.org/-/media/events/2024/10/ecological-risk/programme-booklet.pdf" target="_blank">morning session</a> . The full program is being <a href="https://www.youtube.com/watch?v=gVuxzand8RE" target="_blank">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. (Update: partial <a href="https://anil.recoil.org/#daytwo" target="_blank">day 2 notes</a> now available below) Opening Keynote by Sir Partha Dasgupta The summit kicked off with a keynote by economist <a href="https://en.wikipedia.org/wiki/Partha_Dasgupta" target="_blank">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" target="_blank">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. Sir Partha Dasgupta opening the...Workshopping, across the universe2024-10-02T01:00:00Z2024-10-02T01:00:00ZRichardMhttps://mort.io/blog/workshopping-edgeless/One of the pleasures of being an academic is to travel to nice places to meet interesting people, and interesting places to meet nice people. In one of my first such trips for a few years I recently went to Sweden to participate in the <a href="https://cloudresearch.org/workshops/17th/" target="_blank">17th Cloud Control Workshop</a> . __LINK_1__ I’d previously attended the <a href="https://cloudresearch.org/workshops/15th/" target="_blank">15th Cloud Control
Workshop</a> shortly before the pandemic happened, causing the series to pause briefly. This was the reboot, and as before, it was a great deal of fun: good company, good food, beautiful location. If you get the chance to go, take it if you can! The workshop is a really nice mix of keynote presentations – not too many and not too long at 20 minutes (mostly) – and discussion sessions proposed beforehand or on site by participants. I gave one of the keynotes, talking about the challenges posed and...Mon 30 Sep 20242024-09-30T01:00:00Z2024-09-30T01:00:00ZRyanGhttps://ryan.freumh.org/2024-09-30.htmlPrevious: <a href="2024-09-23.html" target="_blank">Mon 23 Sep 2024</a> Next: <a href="2024-10-07.html" target="_blank">Mon 7 Oct 2024</a> Mon wrote out some of the formalisations in OCaml worked on LOCO submission Tue LOCO submission package management paper cargo feature formalisation Wed package management paper finished the cargo feature formalisation described singular versions with conflicts Thur submitted second year report package management paper I’ve thought of another complication with the source vs binary dichotomy – dependencies might result language vs system package manager source vs binary Why NixOS? Reproducibility? No. Atomicity. Fri package management paper high-level representation - hypergraph low-level representation - graph CANCELED change depends order to match topological sort, Nix thesis, and build systems a la carte DONE rename package calculus DONE process...Mon 23 Sep 20242024-09-23T01:00:00Z2024-09-23T01:00:00ZRyanGhttps://ryan.freumh.org/2024-09-23.htmlPrevious: <a href="2024-09-16.html" target="_blank">Mon 16 Sep 2024</a> Next: <a href="2024-09-30.html" target="_blank">Mon 30 Sep 2024</a> Mon Added a SAT expression of the dependancy resolution problem, and added some example graphs. Tue more package management Wed some package management loco Thur finished loco chatted with patrick about the splash paper Fri added conflicts and optional dependencies to the package management calculusBeing on the HotNets 2024 program committee2024-09-22T01:00:00Z2024-09-22T01:00:00ZAnilMhttps://anil.recoil.org/notes/hotnets-pc-2024I was on the program committee for <a href="https://conferences.sigcomm.org/hotnets/2024/" target="_blank">HotNets
2024</a> this year, which was a thoroughly enjoyable experience. The <a href="https://conferences.sigcomm.org/hotnets/2024/accepted.html" target="_blank">list of accepted
papers</a> is now out, and it's a diverse program -- with my personal favourites being the ones on space communications networks using low earth orbit satellites. Well done to <a href="https://www.microsoft.com/en-us/research/people/bearzani/" target="_blank">Behnaz
Arzani</a> and <a href="https://www.cs.cornell.edu/~jnfoster/" target="_blank">Nate
Foster</a> for really excellent general chairing and ensuring the PC maintained a constructive, positive tone while doing the difficult job of selecting papers from a crowded set of submissions. The structure of of the program committee was also somewhat novel, and one I'd like to replicate in other conferences I organise in the future. The spectacular view from Jane Street's 18th floor! Two Review Rounds. There were two rounds of reviewing, with any clear decisions from the first set of reviewers...Part II Projects2024-09-20T01:00:00Z2024-09-20T01:00:00ZRichardMhttps://mort.io/blog/part-ii-projects/Undergraduate final-year (“Part II”) project supervision goes in fits and starts. After a couple of years of having almost no interest, this year I’ve had several enquiries and it seems I might end supervising 3–4 projects. So herewith a record of the things I’ve found myself repeating! <a href="https://mort.io/blog/part-ii-projects/#project-structure" target="_blank">Project structure</a> The key thing for the structure of the project is to make sure that there is a core piece that is (essentially) guaranteed to be deliverable. This is the piece that you know you can do, and once done and written up, you know you can get an adequate (if not great) mark. Ensuring this takes the risk out of the project. On top of this core piece, it’s then usually sensible to build “a few” (2? 3? 4?) extensions which will make the project spicy if done well. You may wish to phrase these extensions...Mon 16 Sep 20242024-09-16T01:00:00Z2024-09-16T01:00:00ZRyanGhttps://ryan.freumh.org/2024-09-16.htmlPrevious: <a href="2024-09-09.html" target="_blank">Mon 9 Sep 2024</a> Next: <a href="2024-09-23.html" target="_blank">Mon 23 Sep 2024</a> Mon cabal2opam it looks like we can use <a href="https://hackage.haskell.org/01-index.tar" target="_blank">https://hackage.haskell.org/01-index.tar</a> similar to cargo’s package index! oh no, this is just a bundle of cabal files also, if we want to depend on projects outside of the repository we’ll need to parse cargo files package management abstract second year report met with anil package management abstract However, inadequacies in software deployment technologies used for spatial devices often leads to scenarios such as running software vulnerable to exploits. There is a proliferation of package managers with varying degrees of expressivity and reproducibility using formats that aren’t interoperable. Multi-lingual projects can’t provide their dependencies in a unified way, and dependencies from one package manager ecosystem can’t express a...Mon 9 Sep 20242024-09-09T01:00:00Z2024-09-09T01:00:00ZRyanGhttps://ryan.freumh.org/2024-09-09.htmlPrevious: <a href="2024-09-02.html" target="_blank">Mon 2 Sep 2024</a> Next: <a href="2024-09-16.html" target="_blank">Mon 16 Sep 2024</a> Mon <a href="https://srl.cs.jhu.edu/pubs/SRL2003-02.pdf" target="_blank">https://srl.cs.jhu.edu/pubs/SRL2003-02.pdf</a> commented on Roy’s project proposal DONE second year report cabal to opam translation Wed second year report KILL read <a href="http://www.chriswarbo.net/projects/nixos/nix_dependencies.html" target="_blank">http://www.chriswarbo.net/projects/nixos/nix_dependencies.html</a> created <a href="https://github.com/RyanGibb/ocaml-purl" target="_blank">https://github.com/RyanGibb/ocaml-purl</a> Thu second year report Fri got cabal2opam working! tomorrow: we try with a full repositoryPost-COVID19 TPC experience2024-09-09T01:00:00Z2024-09-09T01:00:00ZRichardMhttps://mort.io/blog/post-covid-tpc/I do not participate in a huge number of TPCs (Technical Programme Committees) as a general rule– partly time constraints but mostly no-one knows who I am so I don’t often get asked… (!) I have done a few though, some big (e.g., <a href="https://www.usenix.org/conference/nsdi15" target="_blank">USENIX NSDI</a> , <a href="https://conferences.sigcomm.org/imc/2018/" target="_blank">ACM IMC</a> ), some small ( <a href="https://uksystems.org/" target="_blank">UK Systems</a> , <a href="https://link.springer.com/conference/pam" target="_blank">PAM</a> ), and perhaps because I only do a couple every few years, while doing <a href="https://conferences2.sigcomm.org/co-next/" target="_blank">ACM
CoNEXT</a> and <a href="https://acm-ieee-sec.org/list/" target="_blank">ACM/IEEE
SEC</a> this week, I found myself particularly noticing some changes in practice since that last TPCs I recall (notably <a href="https://www.usenix.org/conference/nsdi15" target="_blank">NSDI</a> and <a href="https://conferences.sigcomm.org/imc/2018/" target="_blank">IMC</a> ). So here are three observations. <a href="https://mort.io/blog/post-covid-tpc/#1-online-first-and-only" target="_blank">1. Online, first and only</a> The biggest obvious change is that TPC meetings are now online rather than in-person. This has one big disadvantage for me: I really enjoyed travelling to the meeting to meet colleagues and (usually) participate in some...Mitigating credit reversal risks in nature-based solutions2024-09-08T01:00:00Z2024-09-08T01:00:00ZAnilMhttps://anil.recoil.org/notes/mitigating-nbs-risk-paperMany of the questions around our recent <a href="https://anil.recoil.org/papers/2023-naturecredits" target="_blank">Nature Sustainability commentary on NbS credits</a> revolve around how to finance new projects if credible credits need to be ex-post. Our latest paper published in Carbon Management on " <a href="https://anil.recoil.org/papers/2024-nbs-risk" target="_blank">Mitigating risk of credit reversal in nature-based climate solutions by optimally anticipating carbon release</a> " tries to address this. The problem with selling ex-ante (future) carbon credits for (e.g.) a deforestation avoidance scheme is that project reversals can happen in the future ("deforestation has increased") thus rendering any credits issued previously useless. On the flip side though, an overly conservative view of the future ("the entire forest will disappear overnight!") is clearly so conservative that it doesn't serve the best interests of the project developer. So ideally, a project would make realistic but conservative ex-ante predictions that is safe for both project developer (who gets...Towards security specifications for agentic AIs2024-09-04T01:00:00Z2024-09-04T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-hope-bastion-1A very fun talk at <a href="https://icfp24.sigplan.org/home/hope-2024" target="_blank">ACM HOPE 2024</a> on some new work with <a href="https://web.eecs.umich.edu/~comar/" target="_blank">Cyrus Omar</a> and <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> on how we can formally specify systems to be robust to code generation by AI agents. For instance, if you were to ask GitHub Copilot to generate you code to filter endangered animals out of a folder of images, it might interpret that as to delete the image, or to move it to another folder (which might be public), or just remove it from the index. Any of those options are potentially valid, so what do we do? Our idea is to use F* to specify a rich set of allowable behaviours which can then be dynamically enforced in less expressive languages, and thus offer layers of protection against over-eager (or rogue) AI agents. [… <a href="https://anil.recoil.org/news/2024-hope-bastion-1" target="_blank">183 words</a> ] <a href="https://web.eecs.umich.edu/~comar/" target="_blank">Cyrus Omar</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://icfp24.sigplan.org/home/hope-2024" target="_blank">the 12th ACM SIGPLAN Workshop on Higher-Order Programming with Effects (HOPE)</a> . <a href="https://icfp24.sigplan.org/home/hope-2024" target="_blank">URL</a>...New teaching page with my Computer Science courses2024-09-03T01:00:00Z2024-09-03T01:00:00ZAnilMhttps://anil.recoil.org/notes/new-teaching-pageThere's a new <a href="https://anil.recoil.org/notes/teaching" target="_blank">teaching</a> page with my past and present courses, and links to the associated teaching materials. One of the nice things about most Cambridge courses is that all the teaching materials are public, except for video recordings of the lectures themselves.Mon 2 Sep 20242024-09-02T01:00:00Z2024-09-02T01:00:00ZRyanGhttps://ryan.freumh.org/2024-09-02.htmlPrevious: <a href="2024-08-26.html" target="_blank">Mon 26 Aug 2024</a> Next: <a href="2024-09-09.html" target="_blank">Mon 9 Sep 2024</a> Tue Try dumping the SAT graph to see how big we make it hmm, magic trace traces are empty Spent some trying to understand the SAT solving Wed sat: TRYING: not(cargo-quote.1.0.32) sat: enqueue: not(cargo-quote.1.0.32) (considering) sat: TRYING: not(cargo-quote.1.0.33) sat: enqueue: not(cargo-quote.1.0.33) (considering) sat: TRYING: not(cargo-quote.1.0.34) sat: enqueue: not(cargo-quote.1.0.34) (considering) sat: TRYING: not(cargo-quote.1.0.35) sat: enqueue: not(cargo-quote.1.0.35) (considering) sat: TRYING: not(cargo-quote.1.0.36) sat: enqueue: not(cargo-quote.1.0.36) (considering) sat: TRYING: not(cargo-quote.1.0.37) sat: enqueue: not(cargo-quote.1.0.37) (considering) sat: TRYING: not() sat: enqueue: not() (considering) sat: enqueue:...Building species models of the planet2024-09-02T01:00:00Z2024-09-02T01:00:00ZAnilMhttps://anil.recoil.org/notes/ukri-grant-terraI 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 href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> (from computer science), <a href="https://coomeslab.org" target="_blank">David A Coomes</a> (from Plant Sciences), <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> (from Zoology) and <a href="https://www.cambridgeconservation.org/about/people/professor-neil-burgess/" target="_blank">Neil Burgess</a> (the Head of Science at <a href="https://www.unep-wcmc.org/en/the-team" target="_blank">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" target="_blank">building foundation models for planetary intelligence</a> . 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/" target="_blank">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 ("too much nature") or NERC ("too much engineering") or STFC ("not enough satellites") . But this interdisciplinary program expressly assembled a panel...Parallel traversal effect handlers for OCaml2024-09-01T01:00:00Z2024-09-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/effect-parallel-strategiesParallel traversal effect handlers for OCaml This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:sb2634@cam.ac.uk" target="_blank">Sky Batchelor</a> . It is co-supervised with <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . Most existing uses of effect handlers perform synchronous execution of handled effects. Xie et al proposed a traverse handler for parallelisation of independent effectful computations whose effect handlers are outside the parallel part of the program. The paper <a href="https://anil.recoil.org/#fn-1" target="_blank">[1]</a> gives a sample implementation as a Haskell library with an associated λp calculus that formalises the parallel handlers. This project aims to: implement the traverse handler in OCaml 5, using single-shot handlers <a href="https://anil.recoil.org/#fn-2" target="_blank">[2]</a> identify a selection of parallel-friendly data structures that might benefit from such...Gradually debugging type errors2024-09-01T01:00:00Z2024-09-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/gradual-type-error-debuggingGradually debugging type errors This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:mc2372@cam.ac.uk" target="_blank">Max Carroll</a> . It is co-supervised with <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . Reasoning about type errors is very difficult, and requires shifting between static and dynamic types. In OCaml, the type checker asserts ill-typedness but provides little in the way of understanding why the type checker inferred such types. These direct error messages are difficult to understand even for experienced programmers working on larger codebases. This project will explore how to use gradual types to reason more effectively about such ill-typed programs, by introducing more dynamic types to help some users build an intuition about the problem in their code. The intention is to...socialising the early internet versus ai....2024-08-31T07:42:00Z2024-08-31T07:42:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-5882554149199894379I'm trying to pin down the exact date but sometime in 1984, i was at a dinner party with a bunch of old university chums, and I went into a brief rant about how the Internet was coming and it would change everything. They all looked at me like I was some complete nutter (and they were perhaps not all wrong). These college mates were from several walks of life (editor, travel guide publisher, film maker/producer, speech therapist) and quite well educated and not un-technical, but my enthusiasm was misplaced at that time It took a long long time before they came to take for granted what I\d been using for 5 years - perhaps a decade and then some....and of course, another decade later, we started to see mobile, social etc, and some of the surveillance, toxic content, and other negative sides...Paper published on ex-ante forecasts of nature-based solutions2024-08-31T01:00:00Z2024-08-31T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-nbs-risk-2Our paper on ex-ante projection for nature-based solutions has been published in the <a href="https://www.tandfonline.com/journals/tcmt20" target="_blank">Journal of Carbon Management</a> . I also wrote up some <a href="https://anil.recoil.org/notes/mitigating-nbs-risk-paper" target="_blank">long-form thoughts</a> on it here. <a href="https://www.plantsci.cam.ac.uk/staff/dr-e-ping-rau" target="_blank">E.-Ping Rau</a> , <a href="https://www.jamesgross.org" target="_blank">James Gross</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> and <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> . Journal paper in <a href="https://www.tandfonline.com/doi/full/10.1080/17583004.2024.2390854" target="_blank">Carbon Management</a> (vol 15 issue 1). <a href="https://www.tandfonline.com/doi/full/10.1080/17583004.2024.2390854" target="_blank">URL</a> (tandfonline.com) <a href="https://doi.org/10.1080/17583004.2024.2390854" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-nbs-risk.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-nbs-risk.pdf" target="_blank">PDF</a>Stop, Start2024-08-30T01:00:00Z2024-08-30T01:00:00ZRichardMhttps://mort.io/blog/stop-start/Well, here we go again, again. Having stalled out back in 2013 to restart in 2015, I stalled out again in 2017, so am finally restarting seven years later. Again. I do have a dozen or more half-written posts from that period that may leak out slowly, in <a href="https://mort.io/tags/old" target="_blank">backdated form</a> . The stack for the blog has been updated again, naturally – the tools got better after all. So now this is using <a href="https://www.getzola.org" target="_blank">Zola</a> with, initially, the <a href="https://github.com/jieiku/abridge/" target="_blank">abridge theme</a> . I think it’s shinier, and hopefully also involves (almost) no JavaScript, is finally accessible, and not too heavyweight. In removing the excessive JavaScript, I also updated my <a href="https://mort.io/blog/stop-start/./research#publications" target="_blank">publication list</a> <a href="https://github.com/mor1/bib2html" target="_blank">generation
process</a> : no more CoffeeScript and JavaScript, just some plain ol’ <a href="https://www.python.org/" target="_blank">Python</a> using the slick new <a href="https://github.com/astral-sh/uv" target="_blank">uv</a> tooling. The <a href="https://github.com/casey/just" target="_blank">Justfile</a> incantation is something like: papers :=...PACT Tropical Moist Forest Accreditation Methodology2024-08-29T01:00:00Z2024-08-29T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-pact-tmf-3We 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" target="_blank">v2.0</a> from six months ago. The key updates are a new <a href="https://tinyurl.com/PACTTMFexplainer" target="_blank">high-level explainer</a> , as well as clarifiations for buffer zones and base tiles. <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://www.liverpool.ac.uk/geography-and-planning/research/environmental-change/postgraduates/" target="_blank">James Hartup</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , <a href="https://uk.linkedin.com/in/miranda-lam-a088561b4" target="_blank">Miranda Lam</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.lambdacambridge.com/robin-message" target="_blank">Robin Message</a> , <a href="https://www.plantsci.cam.ac.uk/staff/dr-e-ping-rau" target="_blank">E.-Ping Rau</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.plantsci.cam.ac.uk/staff/dr-charlotte-wheeler" target="_blank">Charlotte Wheeler</a> and <a href="https://www.zoo.cam.ac.uk/directory/abigail-williams" target="_blank">Abby Williams</a> . Working paper at <a href="https://www.cambridge.org/engage/coe/article-details/66b9d9345101a2ffa813e37c" target="_blank">Cambridge Open Engage</a> . <a href="https://www.cambridge.org/engage/coe/article-details/66b9d9345101a2ffa813e37c" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.33774/coe-2024-gvslq" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-pact-tmf.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf" target="_blank">PDF</a>smelly media2024-08-27T06:20:00Z2024-08-27T06:20:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-4222520672957824644Years ago, i remember we got asked at UCL (say 1994) would it be possible to carry a smell over HTTP - The question sounded intriguing (this was before a lot of spam) so we asked for more detail - turned out the sender was a very sensible person who traded fish from Scotland to England, and told us that many experts would check out the fish in the markets in Scotland by smell, to see how fresh they were - so he wonderd could you do this remotely- of course, there was absolutely no reason why a MIME type, or an HTML markup or whatever couldn't be developed to carry smell, but the main challenges, we suggested, were the analysis at the sender side, and synthesis at the receiver side (analog to digital and vice versa, olfactory devices not being widely available) - of course ,there had been...Mon 26 Aug 20242024-08-26T01:00:00Z2024-08-26T01:00:00ZRyanGhttps://ryan.freumh.org/2024-08-26.htmlPrevious: <a href="2024-08-12.html" target="_blank">Mon 12 Aug 2024</a> Next: <a href="2024-09-02.html" target="_blank">Mon 2 Sep 2024</a> Mon ok, so we’re going to try and modify opam-0install-solver to have different `roles` per implementation for every cargo package so there’s no restrictions on a single version of a package. where are the roles defined? Model.role where are the implementations defined? Model.implementations Okay, so what’s the problem? If we have a role as an OpamPackage (name + version) how do we specify the versions to solve in the first instance? Can we just say any of them? Maybe as constraints? Or do you know what, let’s just specify a version up front. How do we minimise duplicated dependancies? How do we do express version constraints with each role a different version? This is trickier than I anticipated. How do we express dependencies when we have each...Discovering `restic`2024-08-26T01:00:00Z2024-08-26T01:00:00ZRichardMhttps://mort.io/blog/restic-discovery/I recently had cause to try to recover some files from my <a href="https://restic.net/" target="_blank">restic</a> backups. These go back for over a year now, and I could not remember at which point I’d mistakenly nuked the directory I now wanted to recover. restic find purports to be able to do this by searching through snapshots but I found that it’s quite slow, and can only search within a time range which is not that helpful when you don’t know the time range you need. So I did it by hand, which turned out to be rather faster. RESTIC_PASSWORD_FILE = /your/backup/password/file RESTIC_REPOSITORY = /your/backup/repository/ \ # list snapshots, filtering by DATE regex, grabbing just the snapshot hash sudo - E restic snapshots - c \ | rg DATE \ | cut - b1-8 \ | while read ss ; do echo " === $ ss " sudo - E restic ls $ ss | rg...A true and fair history of the fair town of Paleochora2024-08-22T07:54:00Z2024-08-22T07:54:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-7133491669333269672the story starts with the founding of the town, and here we already get into murky territory - was it named after the venitian fort that some people claim was on the top of the escarpment/peninsula that sits between the two (sandy and rocky) beachfronts? i.e. Old Castle (paleo, chora) or was it just Old Town (chora means town in greek, after all)? Recent research undertaken by my team has uncovered a much more interesting tale - the port was one of many used by the ancient kingdom of Mali (founded, as of course you know, by <a href="https://en.wikipedia.org/wiki/Sundiata_Keita" target="_blank">Sundiata Keita</a> ) - and was partof their route for trading safely (at arms length, a little like the small island in the port at Nagasaki used by the Japanese and Dutch) with the Europenas (typically marauding crusader types) - the name came from the Mandinka words for Poor...Nature Sustainability commentary on carbon and biodiversity credits2024-08-15T01:00:00Z2024-08-15T01:00:00ZAnilMhttps://anil.recoil.org/notes/nature-crossroadsOur <a href="https://anil.recoil.org/papers/2023-naturecredits" target="_blank">commentary on nature-based credits</a> has been published in <a href="https://www.nature.com/articles/s41893-024-01403-w" target="_blank">Nature
Sustainability</a> , lead expertly by my colleagues <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> and <a href="https://www.naturerecovery.ox.ac.uk/people/sophus-zu-ermgassen/" target="_blank">Sophus zu Ermgassen</a> . In our view the carbon credits markets are vitally important for forest conservation, but the key is to only transact these credits after they have been proven to be demonstrably additional using robust statistical techniques , so that we know before a sale that each credit represents real gains that would not otherwise have occurred without the carbon finance. A more scientific approach that supports transparent, third-party validation could absolutely transform these markets. And given the rapid rate of tropical forest loss, such upscaling of credibility is vitally necessary to raise investor confidence in protecting nature, since we can now be confident that every "credit" sold...Debugging Electron apps2024-08-14T01:00:00Z2024-08-14T01:00:00ZRichardMhttps://mort.io/blog/electron-cli/Another short one, this time the magic flags to get debug output and access to webdev tools under Electron apps such as Slack and whatnot on Wayland: APPLICATION -- enable-logging -- devtools \ -- platform = wayland -- enable-features = UseOzonePlatform -- password-store = " gnome_libsecret "Mon 12 Aug 20242024-08-12T01:00:00Z2024-08-12T01:00:00ZRyanGhttps://ryan.freumh.org/2024-08-12.htmlPrevious: <a href="2024-08-05.html" target="_blank">Mon 5 Aug 2024</a> Next: <a href="2024-08-26.html" target="_blank">Mon 26 Aug 2024</a> Tue apk-tree-sitter dependancy in opam-repository might need debian contrib KILL add translated opam-repository to opam-giga-repository KILL look at all the solving failures Wed trying to modify the zeroinstall solver to support solving multiple versions for e.g. cargo <a href="http://roscidus.com/blog/blog/2014/09/17/simplifying-the-solver-with-functors/" target="_blank">http://roscidus.com/blog/blog/2014/09/17/simplifying-the-solver-with-functors/</a> where does the CUDF conflict between multiple versions of the same package come from? so the fundamental problem here is we have different solving semantics for different parts of the dependency tree I wonder if it would be possible to have a depth first search for cargo’s portion of the dependency tree, and sat solving for the rest Thu where does the CUDF conflict between multiple versions of the same package come from? <a href="https://github.com/ocaml/opam/blob/6cbdfbbb0b05c449e2e98eb81216f8cd2335e351/src/solver/opamSolver.ml#L295-L302" target="_blank">https://github.com/ocaml/opam/blob/6cbdfbbb0b05c449e2e98eb81216f8cd2335e351/src/solver/opamSolver.ml#L295-L302</a> okay, what if we just modify the version...Mon 5 Aug 20242024-08-05T01:00:00Z2024-08-05T01:00:00ZRyanGhttps://ryan.freumh.org/2024-08-05.htmlPrevious: <a href="2024-07-08.html" target="_blank">Mon 8 Jul 2024</a> Next: <a href="2024-08-12.html" target="_blank">Mon 12 Aug 2024</a> Mon Package Management Test with `opam install –dry-run` you can emulate it by encoding their dependencies and then solving in that order with a real client, you would just invoke cargo once cargo depexts 0install memo bug getting latest ones solve for cargo equivalent to cargo install what if we did this for nix flakes? <a href="https://github.com/snowfallorg/thaw" target="_blank">https://github.com/snowfallorg/thaw</a> Eon So, interesting Eon problem: Patrick’s server failed to connect to mine, presumably after a restart of both, as it was querying itself for `freumh.org`: Aug 05 10:37:31 sirref capd[1761828]: capd: [INFO] Connecting to tcp:freumh.org:7000... Aug 05 10:37:31 sirref capd[1761828]: +Failed to connnect to primary: Unknown host "freumh.org" Aug 05 10:37:31 sirref capd[1761828]: +Retrying in 60.000000 I think I’ve just...Building a Low-Powered NAS2024-08-03T01:00:00Z2024-08-03T01:00:00ZRyanGhttps://ryan.freumh.org/nas.htmlPublished Sat 3 Aug 2024. Tags: <a href="/technology.html" target="_blank">technology</a> . At the start of this year I built a Network-Attached Storage (NAS) server to store backups, photos & videos, digitised VHS tapes, cached builds, and more. Having a dedicated machine has allowed me to use it in ways that wouldn’t be feasible with cloud storage, such as live transcoding of media playback to different resolutions or codecs, and having it physically co-located makes it resilient to network outages. I had a look at some of the pre-built solutions out there, but they seemed expensive for what they were, often having architectures a few generations behind. So I decided to build my own. With the price of energy in the UK power efficiency was a primary concern and informed many of the decisions made when building it. Hardware The...Using wasm to locally explore geospatial layers2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/life-explorer-wasmUsing wasm to locally explore geospatial layers This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:sf729@cam.ac.uk" target="_blank">Sam Forbes</a> . It is co-supervised with <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> . Some of my projects like <a href="https://anil.recoil.org/projects/life" target="_blank">Mapping LIFE on Earth</a> or <a href="https://anil.recoil.org/projects/rsn" target="_blank">Remote Sensing of Nature</a> involve geospatial base maps with gigabytes or even terabytes of data. This data is usually split up into multiple GeoTIFFs, each of which has a slice of information. For example, the LIFE persistence maps have around 30000 maps for individual species, and then an aggregated GeoTIFF for mammals, birds, reptiles and so forth. This project will explore how to build a WebAssembly-based visualisation tool for geospatial ecology data. This existing data is in the form of GeoTIFF files, which are image files with embedded...Towards reproducible URLs with provenance2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/urls-with-provenanceTowards reproducible URLs with provenance This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is available for being worked on. It may be co-supervised with <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . Vurls are an attempt to add versioning to URI resolution. For example, what should happen when we request https://doi.org/10.1109/SASOW.2012.14 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" target="_blank">vurl</a> library written in OCaml outputs the following: # Eio_main.run @@ fun env -> Vurl_eio.with_default ~net:env#net env#cwd @@ fun () -> let vurl = Vurl.of_uri "https://doi.org/10.1109/SASOW.2012.14" in let vurl, file = Vurl.file vurl in Vurl.pp Format.std_formatter vurl;; { "intentional_uri": "https://doi.org/10.1109/SASOW.2012.14", "segments": [ {...Real-time mapping of changes in species extinction risks2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/mapping-species-extinction-risksReal-time mapping of changes in species extinction risks This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://emiliolr.github.io" target="_blank">Emilio Luz-Ricca</a> . It is co-supervised with <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> . Loss of habitat represents the most significant threat to wildlife overall, but advances in satellite sensing have enabled the assessment of habitat extent with comprehensive spatial coverage and reasonable temporal resolution. To address rising demand for metrics to quantify biodiversity, we have developed the LIFE metric (see <a href="https://anil.recoil.org/projects/life" target="_blank">Mapping LIFE on Earth</a> ) that models the effect of landuse changes on species extinction risk as a function of Areas of Habitat (AoH). This PhD work explores how to deal with the anthropogenic threats beyond simple habitat loss, including hunting, agricultural...Preprint on Terracorder sensing now available2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-terracorder-1Our preprint on the Terracorder ground sensing platform I've been working with <a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">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. <a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> , <a href="https://www.imperial.ac.uk/people/sarab.sethi" target="_blank">Sarab Sethi</a> , <a href="https://haddadi.github.io/" target="_blank">Hamed Haddadi</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="http://arxiv.org/abs/2408.02407" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/2408.02407" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2408.02407" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-terracorder.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-terracorder.pdf" target="_blank">PDF</a>Nature Sustainability article on carbon/biodiversity credits2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-naturecredits-1Our commentary on nature-based credits has been published in <a href="https://www.nature.com/natsustain/" target="_blank">Nature Sustainability</a> . I wrote some <a href="https://anil.recoil.org/notes/nature-crossroads" target="_blank">thoughts</a> about it here as well. <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://uk.linkedin.com/in/siddarthshrikanth" target="_blank">Siddarth Shrikanth</a> , <a href="https://www.biology.ox.ac.uk/people/joseph-bull" target="_blank">Joseph Bull</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.naturerecovery.ox.ac.uk/people/sophus-zu-ermgassen/" target="_blank">Sophus zu Ermgassen</a> . Journal paper in <a href="https://www.nature.com/articles/s41893-024-01403-w" target="_blank">Nature Sustainability</a> . <a href="https://www.nature.com/articles/s41893-024-01403-w" target="_blank">URL</a> (nature.com) <a href="https://doi.org/10.1038/s41893-024-01403-w" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-naturecredits.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-naturecredits.pdf" target="_blank">PDF</a>Mapping hunting risks for wild meat in protected areas2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/mapping-hunting-risks-for-wild-meatMapping hunting risks for wild meat in protected areas This is an idea proposed in 2024 as a postdoctoral project, and is currently being worked on by <a href="https://charlesemogor.com" target="_blank">Charles Emogor</a> . It is co-supervised with <a href="https://teamcore.seas.harvard.edu/tambe" target="_blank">Milind Tambe</a> . There is an important balance needed between the biodiversity damage caused by hunting in protected areas and the well-being of local communities that depend on it. One understudied driver of overly damaging hunting in these areas is <a href="https://en.wikipedia.org/wiki/Trapping" target="_blank">snaring</a> (as opposed to gun hunting) which potentially increases carcass wastage and hence causing biodiversity harm without proportionate benefit to the community. This project examines how to improve the efficacy of anti-poaching ranger patrols while also plugging the knowledge gap around wild meat snaring. Both of these research topics can be tackled in a...Implementing a higher-order choreographic language2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/choregraphic-programming-ocamlImplementing a higher-order choreographic language This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://github.com/Rokcas" target="_blank">Rokas Urbonas</a> . It was co-supervised with <a href="https://www.cst.cam.ac.uk/people/ds709" target="_blank">Dmirtij Szamozvancev</a> . This project aims to implement a functional choreographic language inspired by the <a href="https://dl.acm.org/doi/pdf/10.1145/3498684" target="_blank">Pirouette calculus</a> . This language was meant to make the notoriously difficult process of implementing distributed algorithms easier, while offering a practical execution model for multi-participant programs. Additionally, it aimed to match the expressiveness and performance of similar existing solutions. The project completed very successfully, and resulted in <a href="https://github.com/Rokcas/chorcaml" target="_blank">ChorCaml</a> , an embedded DSL for choreographic programming in OCaml. The language facilitates the implementation of distributed algorithms, while...Foundation models for complex geospatial tasks2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/ssl-for-geospatial-tasksFoundation models for complex geospatial tasks This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://www.cst.cam.ac.uk/people/og309" target="_blank">Onkar Gulati</a> . It is co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> and <a href="https://coomeslab.org" target="_blank">David A Coomes</a> . Self-supervised learning (SSL) represents a shift in machine learning that enables versatile pretrained models to leverage the complex relationships present in dense–oftentimes multispectral and multimodal–remote sensing data. This in turn can accelerate how we address sophisticated downstream geospatial tasks for which current methodologies prove insufficient, ranging from land cover classification to urban building segmentation to crop yield measurement and wildfire forecasting. This PhD project explores the question of how current SSL methodologies may be altered...An imperative, pure and effective specification language2024-08-01T01:00:00Z2024-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/effective-specification-languagesAn imperative, pure and effective specification language This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:ms2922@cam.ac.uk" target="_blank">Max Smith</a> . It is co-supervised with <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . Formal specification languages are conventionally rather functional looking, and not hugely amenable to iterative development. In contrast, real world specifications for geospatial algorithms tend to developed with "holes" in the logic which is then filled in by a domain expert as they explore the datasets through small pieces of exploratory code and visualisations. This project seeks to investigate the design of a specification language that looks and feels like Python, but that supports typed holes and the robust semantic foundations of a typed functional language...Self Hosting - 2024 edition2024-07-18T17:39:22Z2024-07-18T17:39:22ZMichaelDhttps://digitalflapjack.com/blog/hosting24/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. 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....what is the internet, what is ai, and what is for dinner?2024-07-16T07:05:00Z2024-07-16T07:05:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-1018876769060939746at an "internet is 50" event at the royal society (is 350) yesterday it was clear that a lot of people want to claim they invented the internet, and they are not wrong, but there are very different viewpoints which correspond to layers, and, as with a lot of archeology, when you dig through the layers of ancient civilisations, you find historical context (as well as entire slices full of carbon indicating rather violent and abrupt end to some). photonics - 60 years old - clearly was the internet (wasn't at all for 30 years, but who's counting) radio - 100 years old, and now trending as 6G, despite that most the internet is over WiFi on account of money ip - whether v4, v5 (st) or v6, this is the echt internet web (web science etc) - from 92, what a lot of people confuse with the internet...New set of ideas for incoming students2024-07-15T01:00:00Z2024-07-15T01:00:00ZAnilMhttps://anil.recoil.org/notes/student-ideasI've refreshed the set of project <a href="https://anil.recoil.org/ideas" target="_blank">ideas</a> for incoming <a href="https://www.cst.cam.ac.uk/teaching/part-ii" target="_blank">CST Part II</a> and <a href="https://www.cst.cam.ac.uk/teaching/masters" target="_blank">MPhil</a> and PhD student projects for 2024-2025. 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.Real-time Wildlife Monitoring2024-07-12T19:52:48Z2024-07-12T19:52:48ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/tyPqbNvp3isgTDZVVoLFD1Abstract: This research introduces an AI-based alert system to reduce human-wildlife conflicts in the Romanian Carpathian Mountains. Globally, conflicts between people and wildlife are rising due to population growth, shifting land use patterns and climate change. In Romania, mountain communities are impacted by bears and wild boars, which damage livestock, crops and property. These conflicts can undermine conservation efforts and may result in the killing of problematic animals. In collaboration with Fundația Conservation Carpathia, this research supports Rapid Intervention Teams who respond to wildlife activity in mountain villages. Six years of camera trap data are used to train and test AI models to detect and classify European mammals. These models are integrated into an alert system...randix2024-07-09T10:43:00Z2024-07-09T10:43:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-1092344171793765711i'm thinking about a replacement for posix that resists vulnerabilities through large amounts of random behaviour - so thinking about the relevant system call api we propose and have prototyped spoon() which replaces fork(), and has far less precise semantics and resurrect() which replaces both exec() and kill(), with the obvious connotations open(),close(),read(),write(),link(), and seek() are replaced by a single multihead attention system call llm() which either entrains or implies, depending on the sense of the first param. rand() of course, behaves exactly as before, at least under test, generating the pseudo-random number sequence 1,2,3,4,5,6,7,8,9 etc etcMon 8 Jul 20242024-07-08T01:00:00Z2024-07-08T01:00:00ZRyanGhttps://ryan.freumh.org/2024-07-08.htmlPrevious: <a href="2024-06-24.html" target="_blank">Mon 24 Jun 2024</a> Next: <a href="2024-08-05.html" target="_blank">Mon 5 Aug 2024</a> <a href="https://github.com/RyanGibb/opam-apk-repository" target="_blank">https://github.com/RyanGibb/opam-apk-repository</a> a27b6fb1f2ab# opam repo add opam-apk-repository /opam-apk-repository a27b6fb1f2ab# opam update a27b6fb1f2ab# opam update [WARNING] Running as root is not recommended <><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> [opam-apk-repository] synchronised from file:///opam-apk-repository [default] no changes from https://opam.ocaml.org Now run 'opam upgrade' to apply any package updates. a27b6fb1f2ab# opam install nano [WARNING] Running as root is not recommended The following actions will be performed: - install ncurses-dev 6.4_p20240420-r0 [required by nano] - install ocaml-base-compiler 5.2.0 - install nano 8.0-r0 - install ocaml-config 3 - install ocaml 5.2.0 - install base-domains base - install base-nnp base...COMPASS 2024 report on the CoRE stack RIC meeting2024-07-08T01:00:00Z2024-07-08T01:00:00ZAnilMhttps://anil.recoil.org/notes/compass2024-ric-tripreportThis is a trip report of <a href="https://compass.acm.org" target="_blank">ACM COMPASS 2024</a> held in New Delhi, which had a novel track of <a href="https://compass.acm.org/research-impact-collaboratives/" target="_blank">"Research to Impact Collaboratives"</a> that drew me in. The general chair, <a href="https://www.cse.iitd.ac.in/~aseth/" target="_blank">Aadi Seth</a> wrote a fantastic book on " <a href="https://www.cse.iitd.ac.in/~aseth/act.html" target="_blank">Technology and Disempowerment</a> " 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" target="_blank">Remote Sensing of Nature</a> and <a href="https://anil.recoil.org/projects/plancomp" target="_blank">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" target="_blank">agenda for ACM COMPASS RIC</a> and the overall <a href="https://core-stack.org" target="_blank">CoRE Stack</a> initiative on commoning technologies for resilience and equality The conference itself was held at <a href="http://iiitd.ac.in/" target="_blank">IIIT-D</a> in New Delhi, right at the cusp of the monsoon season and after record-breaking temperatures. Luckily,...Grid-friendly Energy Community Coordination for Reducing Grid Reinforcement Needs2024-07-05T18:14:38Z2024-07-05T18:14:38ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/iSPamqxUdmP2CwNNdGyQSNAbstract: This talk discusses how market mechanisms and automated trading strategies can be used to control the flexible consumption and generation units of the community members in such a way that they make the best possible use of existing distribution networks and support the network operator in avoiding and eliminating congestion situations. This ultimately helps avoiding grid reinforcements or allows to provide a better service with the existing grid, keeping in mind that it takes much longer to reinforce the grid than to build and connect many new (fluctuating) decentralized renewable generators and new loads such as heat pumps and electric vehicles. Bio: Since 2017: Professor of Control and Integration of Grids at INATECH; before: Professor for Energy Systems Technology and Energy...Pudding: user discovery for anonymity networks2024-07-05T01:00:00Z2024-07-05T01:00:00ZMartinKhttp://martin.kleppmann.com/2024/07/05/pudding-user-discovery-anonymity-networks.htmlI’d like to introduce an exciting new research paper I worked on! It’s about a system called <a href="https://arxiv.org/abs/2311.10825" target="_blank">Pudding</a> , and it was presented by <a href="https://twitter.com/ckocaogullar1" target="_blank">Ceren</a> at the <a href="https://sp2024.ieee-security.org" target="_blank">IEEE Symposium on Security and Privacy</a> , one of the top academic conferences on computer security, in May. <a href="https://www.danielhugenroth.com/" target="_blank">Daniel</a> and <a href="https://www.cl.cam.ac.uk/~arb33/" target="_blank">Alastair</a> also worked on this project. Ceren’s presentation <a href="https://www.youtube.com/watch?v=EEUdslTwYZ8" target="_blank">is now available</a> : Let me briefly explain what the paper is about. Anonymity systems allow internet users to hide who is communicating with whom – for example, think a whistleblower talking to a journalist, or a group of activists organising protests against their repressive regime. <a href="https://www.torproject.org/" target="_blank">Tor</a> is the most popular anonymity network; <a href="https://nymtech.net/" target="_blank">Nym</a> is a more recent design with stronger security (and incidentally, one of the better cryptocurrency applications I’ve seen). Nym is based on a research system...Second preprint of the LIFE biodiversity metric available2024-07-01T01:00:00Z2024-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-life-2We have made an update to the <a href="https://anil.recoil.org/projects/life" target="_blank">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. <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball" target="_blank">Thomas Ball</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.cambridgeconservation.org/about/people/andy-arnell/" target="_blank">Andy Arnell</a> , <a href="https://www.cambridgeconservation.org/about/people/daniele-baisero/" target="_blank">Daniele Baisero</a> , <a href="https://www.cambridgeconservation.org/about/people/paz-duran/" target="_blank">América Paz Durán</a> , <a href="https://www.york.ac.uk/sei/staff/jonathan-green/" target="_blank">Jonathan Green</a> , <a href="https://www.zoo.cam.ac.uk/directory/rhys-green" target="_blank">Rhys Green</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> . Journal paper in <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">Philosophical Transactions of the Royal Society</a> (vol 380 issue 1917). <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">URL</a> (royalsocietypublishing.org) <a href="https://doi.org/10.1098/rstb.2023.0327" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-life.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-life.pdf" target="_blank">PDF</a>Annual Monitoring of Forest AGB2024-06-28T18:13:31Z2024-06-28T18:13:31ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/2kgatqvAtb6XUAgF2UoKZzTitle: Annual Monitoring of Forest AGB over a Period of 10 years Using SSL-derived Representations from Optical Time Series Abstract: I recap the functioning of our fully self-supervised learning pipeline based on the spectral-temporal Barlow Twins. The SSL approach generates highly informative representations at 10m spatial resolution from cloud-corrupted optical time series. The resulting representations are well correlated with GEDI-derived relative height measurements so that an AGB model for vegetation/forest of up to 300-500 t/ha can be derived. I show that the model transfers well between years making it possible to train the model on (for example) one year of Sentinel-2 data together with the corresponding GEDI measurements, and applying the frozen model to Landsat data acquired...HyWay: Enabling Mingling in the Hybrid World2024-06-28T18:13:11Z2024-06-28T18:13:11ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/pUULKS4bi9hG9uUy9prhF2We present HyWay, short for “Hybrid Hallway”, to enable mingling and informal interaction among in-person and remote users in semi-structured and unstructured hybrid settings. Key to the design of HyWay is bridging the awareness gap between physical and virtual users and providing the virtual users the same agency as physical users. We explain how HyWay achieves these goals with an agile, light touch approach that centers on commodity hardware, frictionless bootstrapping, and a deploy-learn-refine flywheel to improve the system continually. We present our learnings from multiple deployments and discuss ongoing research aimed at weaving together more tightly the virtual and the physical realms. Bio: Venkat Padmanabhan is the Managing Director of Microsoft Research India in Bengaluru. He...Reinstalling `maestral`2024-06-28T01:00:00Z2024-06-28T01:00:00ZRichardMhttps://mort.io/blog/reinstall-maestral/A short one this; just a crib of commands to redo maestral (unofficial <a href="https://dropbox.com/" target="_blank">Dropbox</a> client) configuration. # remove existing configuration rm ~ /.config/maestral/maestral.ini # appears to fail with `/usr/bin/env 'bash': No such file or directory` maestral autostart && systemctl -- user daemon-reload # ...so instead, just remmeber to do the following on restart maestral stop && maestral start # if desired, add autocompletion for `maestral` in bash [[ $ ( which maestral 2 > /dev/null ) ]] && source < ( maestral completion bash )Speaking at CCI workshop on conservation evidence2024-06-25T01:00:00Z2024-06-25T01:00:00ZAnilMhttps://anil.recoil.org/news/80795e06-ac75-4015-b178-3cfcbb233685-1<a href="https://www.zoo.cam.ac.uk/directory/bill-sutherland" target="_blank">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/" target="_blank">Effectiveness Revolution</a> for transforming conservation into an evidence-driven discipline. The aim was to discuss the "Evidence Emergency" (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. I gave a talk about our early results with the <a href="https://anil.recoil.org/papers/2024-ce-llm" target="_blank">conservation copilots</a> work.Mon 24 Jun 20242024-06-24T01:00:00Z2024-06-24T01:00:00ZRyanGhttps://ryan.freumh.org/2024-06-24.htmlPrevious: <a href="2024-05-27.html" target="_blank">Mon 27 May 2024</a> Next: <a href="2024-07-08.html" target="_blank">Mon 8 Jul 2024</a> Coding TLS get eon to provision it’s own certificateTen Tales of Ross Anderson, mostly tall2024-06-22T10:48:00Z2024-06-22T10:48:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-3148078049203183039While an undergraduate at Trinity College Cambridge, Ross famously accidentally blew up a bedder with his experimental Quantum Bomb in the Anderson Shelter. The bedder wasn't harmed but the experiment showed that the Maths Department had been teaching the wrong type of Quantum Mechanics, with high probability. This would of course, come back to haunt Ross, later in life. Then there was the time he nearly succeeded in back-dooring the NSA...unluckily, they chose a lesser (ironically not quantum proof) algorithm over his, which was a bit of a shame Seeing all the five-eyes data from inside would have been a bit of a coup. And of course, several times he saved a large fraction of the western banking system from collapse (again). This was largely down to understanding the inherent...Tackling the Hidden Costs of Computational Science2024-06-21T16:03:59Z2024-06-21T16:03:59ZSeminarshttps://watch.eeg.cl.cam.ac.uk/w/nfXCsAiyawBPM2qzdpRCfBTitle: Tackling the Hidden Costs of Computational Science: GREENER Principles for Environmentally Sustainable Research Abstract: From genetic studies and astrophysics simulations to AI, scientific computing has enabled amazing discoveries and there is no doubt it will continue to do so. However, the corresponding energy usage and environmental impacts are a growing concern in light of the urgency of the climate crisis, so what can we all do about it? Tackling this issue and making it easier for scientists to engage with sustainable computing is what motivated the Green Algorithms project. Through the prism of the GREENER principles for environmentally sustainable science, we will discuss what we learned along the way, how to estimate the impact of our work and what levers scientists and...Interview with AI@CAM about conservation2024-06-09T01:00:00Z2024-06-09T01:00:00ZAnilMhttps://anil.recoil.org/notes/aicam-interview-ceI talked to the <a href="https://ai.cam.ac.uk" target="_blank">AI@Cam</a> team to discuss our <a href="https://anil.recoil.org/notes/aicn-in-aicam" target="_blank">AICN</a> project and what we're planning to do in the <a href="https://anil.recoil.org/projects/ce" target="_blank">Conservation Evidence Copilots</a> team. 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. What we’re aiming to do through the ai@cam project – bringing...10,000 maniacs and AI is destroying Computer Science, one topic at a time....2024-06-05T07:51:00Z2024-06-05T07:51:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-6204825028186466172This year will see approximately 10,000 papers published in the top 3 conferences in AI alone. What does that even mean? How can anyone have an overview of what is happening in AI? How is their "community" calibrated on what is original, what constitutes rigour, what he paper is significant in terms of potential impact on the discipline? But that's not what I came here to say, at least, thats just the starting point. For a couple of years now, we've seen papers "tossed over the fence" to other conferences (I'm using the conference as an example venue, but I am sure journals, technical press, and bloggers are seeing the same thing). A paper on AI and Systems (or Networks, or Databases, or pick your own long established domain) should bring interesting results in those domains - indeed, it...Hyperspectrally identifying trees in tropical forests2024-06-01T01:00:00Z2024-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-hyper-tropical-mapping-1A preprint on using <a href="https://en.wikipedia.org/wiki/Hyperspectral_imaging" target="_blank">hyperspectral sensors</a> to perform tree species identification across the tropics is now available on bioarxiv. 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. <a href="https://patball1.github.io" target="_blank">James G. C. Ball</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://scholar.google.com/citations?user=gQYhlDYAAAAJ&hl=fr" target="_blank">Anthony Laybros</a> , <a href="https://www.researchgate.net/profile/Colin-Prieur" target="_blank">Colin Prieur</a> , <a href="https://www.bristol.ac.uk/people/person/Toby-Jackson-0f0cc27a-9b35-479c-b2a6-7459834ca871/" target="_blank">Toby Jackson</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://orcid.org/0000-0002-5323-3866" target="_blank">Nicolas Barbier</a> , <a href="https://scholar.google.ca/citations?user=bc4TxdsAAAAJ" target="_blank">Gregoire Vincent</a> and <a href="https://coomeslab.org" target="_blank">David A Coomes</a> . Working paper at <a href="https://www.biorxiv.org/content/10.1101/2024.06.24.600405v1" target="_blank">bioRxiv</a> . <a href="https://www.biorxiv.org/content/10.1101/2024.06.24.600405v1" target="_blank">URL</a> (biorxiv.org) <a href="https://doi.org/10.1101/2024.06.24.600405" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-hyper-tropical-mapping.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-hyper-tropical-mapping.pdf" target="_blank">PDF</a>Mon 27 May 20242024-05-27T01:00:00Z2024-05-27T01:00:00ZRyanGhttps://ryan.freumh.org/2024-05-27.htmlPrevious: <a href="2024-05-20.html" target="_blank">Mon 20 May 2024</a> Next: <a href="2024-06-24.html" target="_blank">Mon 24 Jun 2024</a> NixOS Modules On Friday we were talking about doing something alternative to Nix, but without a clear statement of the problems with Nix. One clear problem I have with the NixOS ecosytem is the module system. From section 5.1 of the <a href="https://edolstra.github.io/pubs/nixos-jfp-final.pdf" target="_blank">NixOS
paper</a> , the module system allows ‘separation of concerns: each module defines a single, “logical” part of the system (e.g., some system service, support for a certain kind of hardware device, or an aspect such as the system path), even though its implementation might cross-cut many “physical” parts (e.g., the derivations that build the boot scripts)’. In one place I can define everything needed for a particular application; I can describe a matrix setup server, reverse proxy, postgres database, dns records, and TLS...Programming for the Planet2024-05-27T01:00:00Z2024-05-27T01:00:00ZAnilMhttps://anil.recoil.org/news/d592bf17-c835-435f-9469-f0f65e926975-1I was invited by Mary Sheeran to deliver a keynoted at <a href="https://www.lambdadays.org/" target="_blank">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" target="_blank">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&list=PLvL2NEhYV4ZtX2TurK0BIlKD_cHct0rSs" target="_blank">interview video</a> they took of all the speakers.Cross "Border" Digital Infrastructure2024-05-23T15:07:00Z2024-05-23T15:07:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-8532119591216467647So again while at ID4Africa in Cape Town this week, I heard a lot of people talking about Cross Border use of digital identity. Lets talk a bit about infrastructure here, as I'm not sure people are aware of how hard it is to determine, reliably, where a person, or device are located, geograhpically, let alone jurisdictionally. We ( <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2527951" target="_blank">Microsoft Center for Cloud Research</a> ) wrote about this a wwhile back when simply considering the impact of GDPR on Cloud Services and the location of personal data. The infrastructure doesn't tell you where it is - borders are not digital, they are geo-political constructs that only exist in someone's mind. GPS doesn't work in doors, and can be remarkably perverse in cities anyhow. Content providers (e.g. the BBC in the UK) worry about delivery of content (and adverts and charging)...sustainability of digital wallets for public infrastructure services2024-05-23T14:52:00Z2024-05-23T14:52:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-2270060711539308948One thing occurred to me when listening to people at ID4Africa 24 talk about wallets is that there's a major sustainability problem due specifically to security considerations. Any wallet needs to be trusted if it is used for transactions that involve personal data or money. To implement this trust, the wallet software currently built by major vendors such as Apple, Google and (say) HSBC can use secure enclaves (Trusted Execution ENvironment) support on the device (e.g. trustzone on ARM processors, or variants as built by various handset vendors). However, the supprt varies with time, but with modications to hardware coming along (e.g. future ARM support for multiple realms and attestation) and simply because software and hardware volunerabilities arise, some of the latter being mitgated...DPG #2 or should I say DPPG or possibly DPPI2024-05-22T08:06:00Z2024-05-22T08:06:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-7059686906301937000We're hearing a lot about DPIs - Digital Public Infrastructure (the Internet, the spectrum for mobile telephone, open banking networking etc).... So then there's a lot of talk about building new Infrastructures for (e.g.) Digital Identity - and provisioning this through Public Private Partnerships - so really we then have a DPPI - indeed, the Internet and WWW and Cloud serve as an example of just that too. But then we have Digital Public Goods - for me, this is an extension of the notion of open source - so again the software that runs the Internet is available in open source form, together with documentation, and even much test data (simulators too). But new systems have evolved new forms of ownership, so a lot of the digital content in the Internet is a mix of open (free) and open...DPGs #12024-05-21T16:27:00Z2024-05-21T16:27:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-6083489878349826265The oldest and best example of a digital public good is the Internet. Why people don't start from this is surprising to me: Since 1982, source code of the exemplary implementation from UC Berkeley has been available plus documented in an open access series of books documenting that code and working: <a href="https://archive.org/details/addison-wesley-richard-stevens-tcp-ip-illustrated-the-protocols-volume-2" target="_blank">TCP/IP Illustrated (vol 2)</a> The key thing here was that every thing accepted as an internet standard had at least 2 interoperating implementations, preferably three, one of which was open source (unencumbred by any IP) - for me, this defines digital (code/data), public (there's no barrier to entry due to ownership restrictive practices) infrastructure (you can run the code and computers are general purppose machines so any computer can run it, subject to resource constraints:-) Two other reference points -...Mon 20 May 20242024-05-20T01:00:00Z2024-05-20T01:00:00ZRyanGhttps://ryan.freumh.org/2024-05-20.htmlPrevious: <a href="2024-05-13.html" target="_blank">Mon 13 May 2024</a> Next: <a href="2024-05-27.html" target="_blank">Mon 27 May 2024</a> Mon: Met with Anil We skimmed the Carbon-aware name resolution paper. Anil said it was a narrow contribution, we’re making too many points in one paper, and that it needs to be framed in a research style with a hypothesis and experimentation attempting to disprove the hypothesis. He liked the mailserver redundancy example (powering up the backup when the primary goes down), which he likened to self-scaling applications managing the power state of machines. He said that the carbon-aware load balancing (Patrick’s section) seems more general than specific to emissions. Anil also said carbon isn’t the best terminology. I agree – we were following HotCarbon’s wording. We talked about doing a simulation to disprove the hypothesis. And how there’s a pareto...Mon 13 May 20242024-05-13T01:00:00Z2024-05-13T01:00:00ZRyanGhttps://ryan.freumh.org/2024-05-13.htmlPrevious: <a href="2024-05-06.html" target="_blank">Mon 6 May 2024</a> Next: <a href="2024-05-20.html" target="_blank">Mon 20 May 2024</a> Wrote ‘Carbon-aware Name Resolution’ with Patrick for HotCarbon but ultimately decided not to submit it as the conference doesn’t seem to align with our interests and the paper could use more polishing. We’re planning on polishing it up and sticking it on arxiv as a basis for a HotNets submission. We spoke to Anil about this and came away with a bunch of ideas, including Managing the power schedule of resource-constrained devices. Re-visiting the idea of giving each service a unique IPv6 address. Store-and-forward energy budgeting for low powered sensor networks. Why isn’t the whole Internet a Filesytem (could the DNS encode file paths?). Providing TLS to MQTT. Having a BGP IPv6 testbed for this with Mythic Beasts. Workload scheduling in a compute...Mon 6 May 20242024-05-06T01:00:00Z2024-05-06T01:00:00ZRyanGhttps://ryan.freumh.org/2024-05-06.htmlPrevious: <a href="2024-04-29.html" target="_blank">Mon 29 Apr 2024</a> Next: <a href="2024-05-13.html" target="_blank">Mon 13 May 2024</a> My Tarides contract is progressing nicely, and we now have Opam setting an environment built from Nix to provide external dependencies. I’ve also indexed all of Nixpkgs history in order to do version solving across it. Spoke to Roy about a possible Part II project, and wrote another proposal on an ‘OCaml Wayland Compositor’; something I’ve been meaning to do for a while but have yet to find the time. Wayland <a href="#fn1" target="_blank">1</a> is a communications protocol for next-generation display servers used in Unix-like systems which has been adopted as the default display server by Linux distributions including Fedora with KDE, and Ubuntu and Debian with GNOME. It aims to replace the venerable X display server with a modern alternative. X leaves logic such as window...Quantifying the impact of the food we eat on species extinctions2024-05-01T01:00:00Z2024-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-food-life-1Submitted preprint on quantifying the biodiversity cost of global food consumption for peer review <a href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball" target="_blank">Thomas Ball</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.york.ac.uk/sei/staff/jonathan-green/" target="_blank">Jonathan Green</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , David Williams and <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> . Working paper at <a href="https://www.cambridge.org/engage/coe/article-details/67a21eac81d2151a0225692b" target="_blank">Cambridge Open Engage</a> . <a href="https://www.cambridge.org/engage/coe/article-details/67a21eac81d2151a0225692b" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.33774/coe-2024-fl5fk-v2" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-food-life.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-food-life.pdf" target="_blank">PDF</a>Predicting species using machine learning at CCAI2024-05-01T01:00:00Z2024-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-sdm-sa-1<a href="https://github.com/emorris7" target="_blank">Emily Morris</a> did some great MPhil work here in her Masters on using <a href="https://anil.recoil.org/ideas/sdms-with-cnns" target="_blank">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" target="_blank">ICLR CCAI</a> workshop in Vienna, and is now off to do a PhD at Oxford! 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. <a href="https://github.com/emorris7" target="_blank">Emily Morris</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> ,...Low-latency wayland compositor in OCaml2024-05-01T01:00:00Z2024-05-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/waylandLow-latency wayland compositor in OCaml This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:tt492@cam.ac.uk" target="_blank">Tom Thorogood</a> . It is co-supervised with <a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> . When building situated displays and hybrid streaming systems, we need fine-grained composition over what to show on the displays. Wayland is a communications protocol for next-generation display servers used in Unix-like systems. <a href="https://anil.recoil.org/#fn-0" target="_blank">[1]</a> It has been adopted as the default display server by Linux distributions including Fedora with KDE, and Ubuntu and Debian with GNOME. It aims to replace the venerable X display server with a modern alternative. X leaves logic such as window management to application software, which has allowed the proliferation of different approaches. Wayland,...Diffusion models for terrestrial predictions about land use change2024-05-01T01:00:00Z2024-05-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/diffusion-model-satellitesDiffusion models for terrestrial predictions about land use change This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . This project investigates how to build remote sensing data-driven models for the evolution of landscapes, which we can use to better predict deforestation, flooding and fire risks. Diffusion models are now widespread for image generation and are now being applied to video. <a href="https://anil.recoil.org/#fn-3" target="_blank">[1]</a> In addition the GenCast project from Google Deepmind used a diffusion model ensemble for weather forecasting, resulting in a high degree of accuracy compared to traditional methods. <a href="https://anil.recoil.org/#fn-2" target="_blank">[2]</a> The goal of this project is to train a video diffusion model on time series of...Mon 29 Apr 20242024-04-29T01:00:00Z2024-04-29T01:00:00ZRyanGhttps://ryan.freumh.org/2024-04-29.htmlPrevious: <a href="2024-04-22.html" target="_blank">Mon 22 Apr 2024</a> Next: <a href="2024-05-06.html" target="_blank">Mon 6 May 2024</a> Attended the MirageOS retreat. Spoke to Hannes’ about the DNS library and he asked me to upstream a few things, and talked about my Capnp approach to updates and secondary-ing. Had some productive conversations with Jules which led to an Opam NixOS depext approach Paul-Elliot helped me make my DNS transport library a bit more idiomatically functional, which we presented. Created a gravity-body simulation with Emile using an as-of-yet released OCaml game engine, which we presented. Got some nice window manager and vim tips. Went for a hike in the Atlas mountains. I also had some thoughts on offline operation of networked applications. One of the attendees showed me a video calling application for use in a mesh network that identifies clients by an IP...Mon 22 Apr 20242024-04-22T01:00:00Z2024-04-22T01:00:00ZRyanGhttps://ryan.freumh.org/2024-04-22.htmlPrevious: <a href="2024-04-15.html" target="_blank">Mon 15 Apr 2024</a> Next: <a href="2024-04-29.html" target="_blank">Mon 29 Apr 2024</a> I deployed Eon certificate provisioning to my server to my server, and promptly got rate limited by Let’s Encrypt (staging). It was a combination of not limiting the amount of concurrent certificates being provisioned and a bug in the Cap’N Proto OCaml RPC Eio port that Patrick purportedly has a <a href="https://github.com/patricoferris/capnp-rpc/commit/6c95e771eb1345dcc6d31b959b1a5a8ca45e8a92" target="_blank">fix</a> for. I’ve ended up using systemd services <a href="https://github.com/RyanGibb/eon/blob/a831b4fdfa54767edf439047e87564a883c099eb/acme.nix#L219-L227" target="_blank">extensively</a> to support provisioning certificates. I also added a CalDAV server to Eilean.Green Urban Equity in the UK2024-04-19T01:00:00Z2024-04-19T01:00:00ZAndrésZGhttps://ancazugo.github.io/python/carto/uk-3-30-300This 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" target="_blank">here</a> .Mon 15 Apr 20242024-04-15T01:00:00Z2024-04-15T01:00:00ZRyanGhttps://ryan.freumh.org/2024-04-15.htmlPrevious: <a href="2024-04-08.html" target="_blank">Mon 8 Apr 2024</a> Next: <a href="2024-04-22.html" target="_blank">Mon 22 Apr 2024</a> I’ve been doing a lot of hacking on Eon to get it to a state where I can use it to provision certificates in production. I’ve written a capnproto schema file that exposes a capability to a domain. When we run a nameserver it outputs a capability for each domain for which it is authoritative. $ cap -z cl.freumh.org --capnp-secret-key-file /var/lib/eon/capnp-secret.pem --capnp-listen-address tcp:cl.freumh.org:7000 --state-dir /var/lib/eon $ sudo ls /var/lib/eon/caps/ cl.freumh.org.cap zone.cap This capability can then be provided to a client. $ capc get-name cl.freumh.org.cap cl.freumh.org The client can create a new capability for a subdomain, which could be passed to a service. NB this is persisted to disk so it can be referenced across reboots. $...social media convestions and aliens in the ether2024-04-13T13:00:00Z2024-04-13T13:00:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-7999667204894138878Starting locally , I've notice how there are many different conventions about how people use different social media platforms (social networks, email, microblogging, etc) At one extreme, some people DM me on slack - this is annoying as, to save my sanity, i have turned off notifications on everything, and I look at different platforms with different frequencies - slack, mostly, once a day, compared to say, whatsapp (and signal and matrix), once an hour at least. While I don't use. teams for messaging, I know people who do, but they are signed on while at work all working hours, so that works ok for them. At another extreme, some people only use a platform in broadcast mode, so an email list is flooded with "how do I leave this list" messages, or a whatsapp group is flooded with "please...Mon 8 Apr 20242024-04-08T01:00:00Z2024-04-08T01:00:00ZRyanGhttps://ryan.freumh.org/2024-04-08.htmlPrevious: <a href="2024-04-01.html" target="_blank">Mon 1 Apr 2024</a> Next: <a href="2024-04-15.html" target="_blank">Mon 15 Apr 2024</a> Tue some rough working notes for eon’s capability interface to provision TLS certificates: modified the client to read the capability from a file and write the certs to a directory. todo: persistence account key wildcard certs should we do CSR on the client or server? should we do renewals on the client or server? let’s store everything on the server renewals keep the same private key? no, new certificate renewals: studryrefs for capabilities mapped to domains keep track of expiry update interface do we mimic DNS UPDATE? yes do we pass binary blob? no todo provisioning a cert for root https://github.com/mirage/ca-certs-nss https://github.com/suri-framework/castore multiple domains SAN CN extensions Thu done: subject alternative name generate caps for...Teaching 1A Security and Software Engineering2024-04-04T01:00:00Z2024-04-04T01:00:00ZAnilMhttps://anil.recoil.org/notes/swsengWe're still reeling from the shocking and unexpected <a href="https://www.cst.cam.ac.uk/news/ross-anderson" target="_blank">passing of Ross Anderson</a> last week. You can read a lovely <a href="https://raintown.org/ross_anderson/" target="_blank">tribute</a> to him by <a href="https://raintown.org" target="_blank">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. In pragmatic news, I'll be emergency lecturing part of Ross' 1A <a href="https://www.cl.cam.ac.uk/teaching/2324/SWSecEng/" target="_blank">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!Global, robust and comparable digital carbon assets2024-04-04T01:00:00Z2024-04-04T01:00:00ZAnilMhttps://anil.recoil.org/news/2024-cc-blockchain-1Paper on smart contracts for carbon credits at <a href="http://icbc2024.ieee-icbc.org" target="_blank">ICBC 2024</a> in Dublin <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://derekhsorensen.com" target="_blank">Derek Sorensen</a> , <a href="https://www.lambdacambridge.com/robin-message" target="_blank">Robin Message</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="http://arxiv.org/abs/2403.14581" target="_blank">proceedings of the 6th IEEE International Conference on Blockchain and Cryptocurrency</a> . <a href="http://arxiv.org/abs/2403.14581" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2403.14581" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-cc-blockchain.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-cc-blockchain.pdf" target="_blank">PDF</a>Mon 1 Apr 20242024-04-01T01:00:00Z2024-04-01T01:00:00ZRyanGhttps://ryan.freumh.org/2024-04-01.htmlPrevious: <a href="2024-03-25.html" target="_blank">Mon 25 Mar 2024</a> Next: <a href="2024-04-08.html" target="_blank">Mon 8 Apr 2024</a> I read <a href="https://datatracker.ietf.org/doc/draft-many-dnsop-dns-isolated-networks/" target="_blank">datatracker.ietf.org/doc/draft-many-dnsop-dns-isolated-networks/</a> which discussed some considerations for DNS in networks with delayed and/or intermittent connectivity. This reminded me of another <a href="./2024-03-18.html#eon" target="_blank">scenario to consider for Eon</a> : Bootstrap a network in a remote isolated environment. As well as, moving more into the service management territory again, keeping track of service logs.Rolling out a new site design2024-04-01T01:00:00Z2024-04-01T01:00:00ZAnilMhttps://anil.recoil.org/notes/bushel-step1I'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" target="_blank">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. <a href="https://nick.recoil.org" target="_blank">Nick Ludlam</a> also refreshed <a href="https://nick.recoil.org" target="_blank">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" target="_blank">recoil.org</a> page for the main server.Mon 25 Mar 20242024-03-25T00:00:00Z2024-03-25T00:00:00ZRyanGhttps://ryan.freumh.org/2024-03-25.htmlPrevious: <a href="2024-03-18.html" target="_blank">Mon 18 Mar 2024</a> Next: <a href="2024-04-01.html" target="_blank">Mon 1 Apr 2024</a> Writing Scientific method: My thesis is that the DNS is the root of the Internet. That is, every network request starts off with a DNS resolution. The DNS is in a great position to manage resources in the Network, like certificates, keys, services, etc. But for some reason people don’t do this now. One advantage Eon has over the state-of-the-art dynamic DNS updates for the ACME DNS challenge is the principle of least privilege. We can provide a capability to only a subdomain, with the thread model a rough service or machine. Regarding scenario 5, the DNS is a very small key value store. “The DNS is a general (if somewhat limited) hierarchical database, and can store almost any kind of data, for almost any purpose,” RFC2181. We can keep track of what...Mon 18 Mar 20242024-03-18T00:00:00Z2024-03-18T00:00:00ZRyanGhttps://ryan.freumh.org/2024-03-18.htmlPrevious: <a href="2024-03-11.html" target="_blank">Mon 11 Mar 2024</a> Next: <a href="2024-03-25.html" target="_blank">Mon 25 Mar 2024</a> Eon Some scenarios we could solve with a client-server API for Eon: We could keep track of the proliferation of federated services in an Eilean deployment including matrix, mastodon, and email. Currently, we need to manually provision DNS records like an A record at mastodon.example.org . We need to run a certbot to respond to a ACME HTTP challenge by configuring a path to serve by a webserver, or respond to a DNS challenge using dynamic DNS UPDATES to update a nameserver. The HTTP challenge pretty heavyweight and doesn’t work so well when e.g. load balancing accross a webserver, and the DNS challenge typically requires providing access to the whole domain. To demultiplex multiple HTTP services on the same machine we typically use a reverse proxy...Mon 11 Mar 20242024-03-11T00:00:00Z2024-03-11T00:00:00ZRyanGhttps://ryan.freumh.org/2024-03-11.htmlPrevious: <a href="2024-02-26.html" target="_blank">Mon 26 Feb 2024</a> Next: <a href="2024-03-18.html" target="_blank">Mon 18 Mar 2024</a> I reworked the EON project structure and Capnp Schema file too: struct Record { name @0 :Text; type @1 :Int32; value @2 :Text; } struct Prereq { union { exists @0 :Record; existsData @1 :Record; notExists @2 :Record; nameInuse @3 :Record; notnameInuse @4 :Record; } } struct Update { union { add @0 :Record; remove @1 :Record; removeAll @2 :Record; removeSingle @3 :Record; } } struct CertReq { # Used to request a certificate for a service union { callback @0 :CertCallback; none @1 :Void; } } interface Zone { # Capability to initalize a Zone for which the nameserver is authorative init @0 (name :Text) -> (domain :Domain); } interface Domain { # Capability for a domain getName @0 () -> (name :Text); # Get the domain name delegate @1 (subdomain :Text) ->...Witch Consumer Magazine, review of the leader boared top three LLMs "Conformité Ecologique" (the ubiquitous CE marque)2024-03-10T15:38:00Z2024-03-10T15:38:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-1856249415092326099Witch Consumer Magazine, review of the leader boared top three LLMs "Conformité Ecologique" (the ubiquitous CE marque) We analyzed the CE claims of the following three large languish models, with respect to four key metrics for the Ecologique, as agreed in European law, namely enthalpy, internet pollution (measured in LoCS -- libraries of congress), bio-dediversification,and general contribution towards the heat death of the universe. Currently, according to the boared, these are the top-of-the-heap in terms of hype-parameters: The Faux Corperation's Pinocchio Astravista's Libration Sitting Duck's Nine Billion Dogma We hired some prompt engineers to devise a suitably timely benchmark suite, and embedded the the three systems in our whim tunnel taking care to emulate all aspects of the...Preprint available on insuring against variability of NbS2024-03-01T00:00:00Z2024-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-nbs-risk-1A 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! <a href="https://www.plantsci.cam.ac.uk/staff/dr-e-ping-rau" target="_blank">E.-Ping Rau</a> , <a href="https://www.jamesgross.org" target="_blank">James Gross</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> and <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> . Journal paper in <a href="https://www.tandfonline.com/doi/full/10.1080/17583004.2024.2390854" target="_blank">Carbon Management</a> (vol 15 issue 1). <a href="https://www.tandfonline.com/doi/full/10.1080/17583004.2024.2390854" target="_blank">URL</a> (tandfonline.com) <a href="https://doi.org/10.1080/17583004.2024.2390854" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-nbs-risk.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-nbs-risk.pdf" target="_blank">PDF</a>Green Urban Equity: Analyzing the 3-30-300 Rule in UK Cities and Its Socioeconomic Implications2024-03-01T00:00:00Z2024-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-green-urban-eq-1Abstract on urban biodiversity and human health at <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html" target="_blank">EGU 24</a> <a href="https://ancazugo.github.io/" target="_blank">Andres Zuñiga-Gonzalez</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.arct.cam.ac.uk/people/dr-ronita-bardhan" target="_blank">Ronita Bardhan</a> . Technical report (EGU24-20833) at <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html" target="_blank">Copernicus Meetings</a> . <a href="https://meetingorganizer.copernicus.org/EGU24/EGU24-20833.html" target="_blank">URL</a> (meetingorganizer.copernicus.org) <a href="https://doi.org/10.5194/egusphere-egu24-20833" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-green-urban-eq.bib" target="_blank">BIB</a>A Case for Planetary Computing2024-03-01T00:00:00Z2024-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-planetary-computing-2Revision of planetary computing preprint <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://ameliaholcomb.github.io" target="_blank">Amelia Holcomb</a> , <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="http://arxiv.org/abs/2303.04501" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/2303.04501" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2303.04501" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-planetary-computing.bib" target="_blank">BIB</a>Towards International Goverance of AI2024-02-26T16:31:00Z2024-02-26T16:31:00ZJon Crowcrofttag:blogger.com,1999:blog-19062127.post-6565644211801997699I wonder what people are really thinking when they think of governance of Intelligence? If we were considering human intelligence (which we are by extension) we better tread carefully, especially when considering who owns it. The ability to reason, creatively, to innovate is not really the same as any other thing we have sought governance over - nuclear weapons (test ban treaty, and pugwash convention) spectrum allocation orbits around earth maritime&air traffic - fuels, tracking, control etc recombinant DNA (asilomar conference the weather (and interventions like geo-engineering e.g. see <a href="https://royalsocietypublishing.org/doi/10.1098/rspa.2019.0255" target="_blank">RS report on same</a> ) What's similar about these, and what is different? Well we only have one go at each - there's a very countable human race, planet, sea, zombie apocalypse, climate emergency. we don't have...Mon 26 Feb 20242024-02-26T00:00:00Z2024-02-26T00:00:00ZRyanGhttps://ryan.freumh.org/2024-02-26.htmlPrevious: <a href="2024-02-19.html" target="_blank">Mon 19 Feb 2024</a> Next: <a href="2024-03-11.html" target="_blank">Mon 11 Mar 2024</a> Shark We’ve got an obuilder runc container using Linux network namespaces with VPNkit forwarding outgoing http requests to a cohttp-proxy-lwt. I’ve created a monorepo assembling obuilder, VPNkit, and cohttp and got them building. Some issues were VPNkit having an outdated version of cohttp and having it’s own dune dns library which collides with the Mirage DNS library. Next is assembling a binary to do the container, namespace, VPNkit, and http proxy orchestration. I’m thinking about the UI of what this will look like. Something like $ shark create <name> $ shark attach <name> $ ... We also need to implement some kind of store to cache and replay http queries. Some technical nodes on reproducing this prototype separate-binary setup follow: build...Mon 19 Feb 20242024-02-19T00:00:00Z2024-02-19T00:00:00ZRyanGhttps://ryan.freumh.org/2024-02-19.htmlPrevious: <a href="2024-02-12.html" target="_blank">Mon 12 Feb 2024</a> Next: <a href="2024-02-26.html" target="_blank">Mon 26 Feb 2024</a> Anil Meeting Anil mentioned with QUIC and DNS SVCB records traffic can be UDP-only. We described a service manager using capability DNS with ‘naming’ and ‘livecycle’ at the DNS level. Anil likened this to docker compose service manager for a collection of services. It seems like systemd’s service management plus container and network management. This would allow things like IP-based load balancing, certificate provisioning, Jitsi-spinning up services on request. I need to extend the lenscap to support service management APIs as well as certificate provisioning. OCluster might be a place to look for this. It could do something really simple like just map to systemd. Anil likened it to Tailscale’s new service management dashboard. I brought up...FOSDEM2024-02-13T00:00:00Z2024-02-13T00:00:00ZRyanGhttps://ryan.freumh.org/fosdem.htmlPublished Tue 13 Feb 2024. Last update Tue 13 Feb 2024. Tags: <a href="/conferences.html" target="_blank">conferences</a> . I attended the Free and Open source Software Developers’ European Meeting (FOSDEM) in Brussels, Belgium last weekend. There are hundreds of hours of talks in 35 rooms over a period of two days, and rooms are often full to capacity, so it’s impossible to see everything! Thankfully every room is live-streamed and recordings made available after the fact, so you can catch up on anything you miss. Friday On the Eurostar over my travelling companion and I were lamenting about the Nix DSL, and we heard a French accent from behind: Ah, NixOS. See you at FOSDEM then! Saturday The day started with a coffee and a banana (probably not substantial enough in hindsight), an absolutely packed number 71 bus to the ULB Solbosch...Mon 12 Feb 20242024-02-12T00:00:00Z2024-02-12T00:00:00ZRyanGhttps://ryan.freumh.org/2024-02-12.htmlPrevious: <a href="2024-02-05.html" target="_blank">Mon 5 Feb 2024</a> Next: <a href="2024-02-19.html" target="_blank">Mon 19 Feb 2024</a> Capability DNS We have this nameserver that can provision TLS certificates with ACME using the DNS challenge, and expose a Cap’NP proto interface <a href="https://github.com/RyanGibb/eon/blob/a442c424ea06b2c819dd48c9e69838e09675b22b/bin/acme/capnp/service_api.capnp" target="_blank">https://github.com/RyanGibb/eon/blob/main/bin/acme/capnp/service_api.capnp</a> . We also have logic to tunnel Cap’NP over DNS <a href="https://github.com/RyanGibb/eon/tree/a442c424ea06b2c819dd48c9e69838e09675b22b/lib/transport" target="_blank">https://github.com/RyanGibb/eon/tree/main/lib/transport</a> , and indeed tunnel arbitrary data such as IP-traffic <a href="https://github.com/RyanGibb/eon/tree/a442c424ea06b2c819dd48c9e69838e09675b22b/bin/transport/tunnel" target="_blank">https://github.com/RyanGibb/eon/tree/main/bin/transport/tunnel</a> . Two ideas we had relating to this were exposing a shell interface <a href="https://github.com/RyanGibb/eon/tree/a442c424ea06b2c819dd48c9e69838e09675b22b/bin/transport/sod" target="_blank">https://github.com/RyanGibb/eon/tree/main/bin/transport/sod</a> over DNS and tunneling DNS traffic itself over DNS for query privacy a la Oblivious DNS <a href="https://github.com/RyanGibb/eon/tree/a442c424ea06b2c819dd48c9e69838e09675b22b/bin/transport/dodo" target="_blank">https://github.com/RyanGibb/eon/tree/main/bin/transport/dodo</a> . I’ve had a look for any related work to ‘de-risk’ a paper. The most obvious is <a href="https://dl.acm.org/doi/pdf/10.1145/2377677.2377692" target="_blank">Signposts</a> , which performs an ‘effectful’ name resolution to establish a communication channel through features of edge networks that break the end-to-end principle like NATs and proxies. It relies on DNSSEC to secure...Mon 5 Feb 20242024-02-05T00:00:00Z2024-02-05T00:00:00ZRyanGhttps://ryan.freumh.org/2024-02-05.htmlPrevious: <a href="2024-01-29.html" target="_blank">Mon 29 Jan 2024</a> Next: <a href="2024-02-12.html" target="_blank">Mon 12 Feb 2024</a> Shark I spoke to Michael about VanillaOS: It uses OCI images and ABRoot to provide immutability and atomic updates. Iirc it’s similar to Fedora Silverblue in that it’s an ‘immutable’ operating system, but Silverblue uses OST which is a ’git for binaries (keeps track of metadata and I think GCs). This is also used by flatpak. Nix is a bit more general in that is allows two packages to have different versions of a dependency by specifying them be absolute path rather than hard linking like ABRoot/OSTree. NixOS modules make it system configuration version controlled and rollback-able, and you don’t have to deal with ‘configuration updates’ like e.g. Ubuntu prompt you with. The downside is that you need to write your system config in this esoteric DSL. I...Selected in the AI@CAM challenge for conservation research2024-02-05T00:00:00Z2024-02-05T00:00:00ZAnilMhttps://anil.recoil.org/notes/aicn-in-aicamWe won the <a href="https://www.cam.ac.uk/stories/AI-deas-launch" target="_blank">AI@CAM challenge</a> that was sent out University wide to find research projects that use AI to tackle society's biggest challenges. Our project on using <a href="https://www.cam.ac.uk/stories/AI-deas-launch#section-9RKgEyI2LZ" target="_blank">AI for climate and nature</a> is one of the five selected. The twin climate and biodiversity crises are two of the world’s most complex challenges to tackle. This project aims to develop AI approaches for bringing together a wide range of datasets and accelerating the collation of information. This work will provide up to date, relevant and robust information for researchers and decision-makers working on climate and biodiversity conservation – opening up the possibility for more targeted and effective solutions to some of our world’s most pressing climate and biodiversity challenges. <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , AI-deas challenge co-lead, said: 'Mitigating the impacts...Uncertainty at scale: how CS hinders climate research2024-02-01T00:00:00Z2024-02-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-uncertainty-cs-1Paper on uncertainty in climate science in <a href="https://undonecs.sciencesconf.org" target="_blank">Undone CS</a> <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="https://undonecs.sciencesconf.org/data/Undonecs_2024_abstract_43.pdf" target="_blank">Undone Computer Science</a> . <a href="https://undonecs.sciencesconf.org/data/Undonecs_2024_abstract_43.pdf" target="_blank">URL</a> (undonecs.sciencesconf.org) <a href="https://anil.recoil.org/papers/2024-uncertainty-cs.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-uncertainty-cs.pdf" target="_blank">PDF</a>Mon 29 Jan 20242024-01-29T00:00:00Z2024-01-29T00:00:00ZRyanGhttps://ryan.freumh.org/2024-01-29.htmlPrevious: <a href="2024-01-22.html" target="_blank">Mon 22 Jan 2024</a> Next: <a href="2024-02-05.html" target="_blank">Mon 5 Feb 2024</a> Interspatial Networking Got a Zigbee2MQTT bridge deployed via NixOS on a Raspberry Pi 5. This required installing an EDK2 raspberry Pi 5 EFI implementation as a bootloader pending U-boot support <a href="https://github.com/NixOS/nixpkgs/issues/260754#issuecomment-1908664693" target="_blank">https://github.com/NixOS/nixpkgs/issues/260754#issuecomment-1908664693</a> . Had lots of false starts trying to cross-compile aarch64 (and arvm6 for the raspberry pi 1) on x86_64. I got pretty far with aarch64 but I think nixos-install doesn’t support a cross-compiled grub installation. I’m playing around with different ways of exposing this over HTTP, DNS, RPCs, and maybe Matrix. EON To support RPCs over DNS as a bootstapping mechanism for Jess and I’s idea of an identity service I resurrected the DNS tunnelling in EON. There’s a few kinks to work out with payload lengths fitting into domain names, and an odd failure mode...Mon 22 Jan 20242024-01-22T00:00:00Z2024-01-22T00:00:00ZRyanGhttps://ryan.freumh.org/2024-01-22.htmlPrevious: <a href="2024-01-15.html" target="_blank">Mon 15 Jan 2024</a> Next: <a href="2024-01-29.html" target="_blank">Mon 29 Jan 2024</a> It’s been 4 weeks since I updated this log! I fell off the bandwagon after returning from Boston, getting sidetracked adding a capability-based RPC to provision TLS certs with ACME on a nameserver. Interspatial networking: Andrew Moore dumped a whole bunch of Zigbee smart lights and plugs on my desk. I got a Zigbee bridge to MQTT bridge working and hooked <a href="fn06.orb" target="_blank">fn06.org</a> up to toggle the lights. This is basically me returning to the original vision of my MPhil project! If I can get a website to control the lights there’s no reason an AR headset couldn’t do the same. I’m also envisioning a DNS-based control interface with access control, e.g. dig toggle._lights.fn06.org . If I want to try the Hololens development environment I’ll need to get a GPU windows...Mon 15 Jan 20242024-01-15T00:00:00Z2024-01-15T00:00:00ZRyanGhttps://ryan.freumh.org/2024-01-15.htmlPrevious: <a href="2024-01-08.html" target="_blank">Mon 8 Jan 2024</a> Next: <a href="2024-01-22.html" target="_blank">Mon 22 Jan 2024</a> Figured out how to use ZFS for my NAS and shark.Mon 8 Jan 20242024-01-08T00:00:00Z2024-01-08T00:00:00ZRyanGhttps://ryan.freumh.org/2024-01-08.htmlPrevious: <a href="2024-01-01.html" target="_blank">Mon 1 Jan 2024</a> Next: <a href="2024-01-15.html" target="_blank">Mon 15 Jan 2024</a> Took some time off to see friends and family. Bult a low-power (12W idle) NAS with 32TB storage on <a href="https://github.com/RyanGibb/nixos/blob/master/hosts/elephant/default.nix" target="_blank">NixOS</a> with ZFS. Blog post TODO. I still think there’s something here with <a href="./2023-10-16.html#hibernia" target="_blank">using a low-powered board to wake a
higher powered computer</a> on e.g. a DNS resolution. Anil mentioned <a href="https://github.com/stalwartlabs/mail-server" target="_blank">stalwart</a> which might be worth looking at for Eilean.2023 year in review2024-01-04T00:00:00Z2024-01-04T00:00:00ZMartinKhttp://martin.kleppmann.com/2024/01/04/year-in-review.htmlA lot has happened in the last year, so I thought it would be good to write up a review. My biggest change in 2023 was that my wife and I had a baby! This has brought a mixture of joys and frustrations, but overall it has been very good. I took three months of full-time parental leave after the birth, and since going back to work I’ve been sharing the parenting with responsibilities with my partner. Family has therefore been my top priority, but I won’t talk much about family things in this post, since I prefer to keep it private. Lots of work things happened as well: New job! As of January 2024 I have a new job as <a href="https://www.cst.cam.ac.uk/news/new-associate-professor-computer-security-and-privacy" target="_blank">Associate Professor in Cambridge</a> ! Unlike all my previous academic positions, which were all fixed-term contracts of a few years, this is a permanent position. A huge number of people apply for this...Tiny Code Christmas - part 2: learning OCaml and that demos are mostly functional2024-01-03T09:57:06Z2024-01-03T09:57:06ZMichaelDhttps://digitalflapjack.com/blog/tcc-part2/This post is a follow on to the previous <a href="/blog/tcc/" target="_blank">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/" target="_blank">OCaml</a> , then you're in the right place. 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...Tiny Code Christmas - part 1: making coding fun through constraints and community2024-01-02T13:00:56Z2024-01-02T13:00:56ZMichaelDhttps://digitalflapjack.com/blog/tcc/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/" target="_blank">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. Your browser does not support the video element. In an post I wrote a couple of years ago I <a href="/blog/a-journey-into-minimal-computing-or-my-slow-evolving-2021-side-project/" target="_blank">mentioned in passing</a> the idea of fantasy consoles like <a href="https://tic80.com" target="_blank">TIC80</a> : these are programs that pretend to emulate a retro computer from the 8 or 16 bit era of...Mon 1 Jan 20242024-01-01T00:00:00Z2024-01-01T00:00:00ZRyanGhttps://ryan.freumh.org/2024-01-01.htmlPrevious: <a href="2023-12-25.html" target="_blank">Mon 25 Dec 2023</a> Next: <a href="2024-01-08.html" target="_blank">Mon 8 Jan 2024</a> Set up a local plaintext email setup with mbsync/goimapnotify/aerc/mu/msmtp/gpgp/ldapsearch <a href="https://github.com/RyanGibb/nixos/tree/7f303f5ff5283d31aa98f88574bfc85f4634afed/modules/personal/home/mail" target="_blank">nix</a> .Spatial and multi-modal extraction from conservation literature2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/spatial-summarisation-of-llmsSpatial and multi-modal extraction from conservation literature This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://profiles.imperial.ac.uk/a.christie" target="_blank">Alec Christie</a> and <a href="https://www.zoo.cam.ac.uk/directory/bill-sutherland" target="_blank">Bill Sutherland</a> . The <a href="https://anil.recoil.org/projects/ce" target="_blank">Conservation Evidence Copilots</a> database contains information on numerous conservation actions and their supporting evidence. We also have access to a large corpus of academic literature detailing species presence and threats which we have assembled in Cambridge in collaboration with the various journal publishers. This MPhil project aims to combine these published literature resources with geographic information to propose conservation interventions. The goal is to identify actions that are likely to be effective based on prior evidence and have...Privacy preserving emissions disclosure techniques2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/tardisPrivacy preserving emissions disclosure techniques This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://www.cst.cam.ac.uk/people/psjm3" target="_blank">Jessica Man</a> . It is co-supervised with <a href="https://martin.kleppmann.com" target="_blank">Martin Kleppmann</a> . Customers of online services may want to take carbon emissions into account when deciding which service to use, but are currently hindered by a lack of reliable emissions data that is comparable across services. Calculating accurate carbon emissions across a cloud computing pipeline involves a number of stakeholders, none of whom are incentivised to accurately report their emissions for competitive reasons. This PhD explores mechanisms to support verifiable and privacy-preserving emissions reporting across a chain of energy suppliers, cloud data centres, virtual machine hosting...Low-power sensing infrastructure for biodiversity2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/recording-natureLow-power sensing infrastructure for biodiversity This is an idea proposed in 2024 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://profiles.imperial.ac.uk/joshua.millar22" target="_blank">Josh Millar</a> . It is co-supervised with <a href="https://haddadi.github.io/" target="_blank">Hamed Haddadi</a> . In-situ sensing devices need to be deployed in remote environments for long periods of time, and minimizing their power consumption is vital for maximising both their operational lifetime and coverage. We are exploring the construction of a versatile multi-sensor device (initially based around the ESP32 chipset) and designing an exceptionally low power consumption model by using an on-device reinforcement learning scheduler that can learn to cooperate with other nearby devices. Our prototype device setup for learning schedules for biodiversity monitoring does pretty well against...Legal perspectives on integrity issues in forest carbon2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/legal-aspects-of-creditsLegal perspectives on integrity issues in forest carbon This is an idea proposed in 2024 as a postdoctoral project, and has been completed by <a href="https://www.cst.cam.ac.uk/people/smc70" target="_blank">Sophie Chapman</a> . It was co-supervised with <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> . Carbon finance offers a vital way to fund urgently needed forest conservation, but there are integrity issues on the supply side. <a href="https://anil.recoil.org/#fn-1" target="_blank">[1]</a> Besides the known issues with carbon quantification, <a href="https://anil.recoil.org/#fn-2" target="_blank">[2]</a> carbon credits are often poorly designed and implemented from a legal perspective. Specifically, in the absence of a clear legal framework for forest carbon credits, contracts tend to conceptualise credits in similar terms to the products of extractive industries, such as mineral mining. This is a factually inaccurate model for carbon credits, since the carbon is not extracted but on the contrary...Generating chunk-free embeddings for LLMs2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/chunk-free-embeddingsGenerating chunk-free embeddings for LLMs This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is currently being worked on by <a href="mailto:mj651@cam.ac.uk" target="_blank">Mark Jacobsen</a> . It is co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . This project aims to explore the development of a chunk-free approach for generating embeddings in Retrieval-Augmented Generation (RAG) models. Traditional RAG workflows often involve manual or predefined chunking of documents, and we seek to bypass this requirement. Instead, our approach involves generating multiple embeddings for unchunked text using a synthetic dataset created by (e.g.) a 7b parameter LLM. This dataset would feature structured, point-by-point summaries of each paragraph. An off-the-shelf embedding model could then be modified by removing its mean...Evaluating RAG pipelines for conservation evidence2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/rag-evaluation-for-ceEvaluating RAG pipelines for conservation evidence This is an idea proposed in 2024 as a good starter project, and has been completed by <a href="mailto:ri301@cam.ac.uk" target="_blank">Radhika Iyer</a> . It was co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . At the <a href="https://anil.recoil.org/projects/ce" target="_blank">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" target="_blank">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. This project involved involve evaluating the performance of RAG pipelines for conservation evidence,...Effective geospatial code in OCaml2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/effective-geospatial-codeEffective geospatial code in OCaml This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:gp528@cam.ac.uk" target="_blank">George Pool</a> . It is co-supervised with <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> and <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . 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. <a href="https://github.com/quantifyearth/yirgacheffe" target="_blank">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...Deep learning for decomposing sound into vector audio2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/decomposing-audio-with-dlDeep learning for decomposing sound into vector audio This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://pure.qub.ac.uk/en/persons/trevor-agus" target="_blank">Trevor Agus</a> . All that we hear is mediated through cues transmitted to the brain from the cochlea, which acts like a bank of auditory filters centred at a wide range of centre frequencies. A lot of our knowledge of hearing comes from psychoacoustical experiments that involve simple sounds, like sine waves, whose synthesis parameters are closely related to cues available beyond the cochlea. However, for recorded sounds, many types of cue are available, but our use of these cues is limited by the extent that these cues can be manipulated in a controlled fashion. <a href="https://anil.recoil.org/#fn-1" target="_blank">[1]</a>...Crawling grey literature for conservation evidence2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/grey-lit-crawlCrawling grey literature for conservation evidence This is an idea proposed in 2024 as a good starter project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Shrey Biswas</a> and <a href="https://github.com/Kacper-M-Michalik" target="_blank">Kacper Michalik</a> . It was co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . At the <a href="https://anil.recoil.org/projects/ce" target="_blank">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" target="_blank">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. This project involved developing a web crawler to search for grey literature on conservation interventions, tracking the provenance and license information, and extracting relevant...Conservation Evidence Copilots2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/ceConservation Evidence Copilots The <a href="https://conservationevidence.com" target="_blank">Conservation Evidence</a> team at the University of Cambridge has spent years screening 1.6m+ scientific papers on conservation, as well as manually summarising 8600+ studies relating to conservation actions. However, progress 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! We are working on AI-driven techniques to accelerate addition of robust evidence to the CE database via automated literature scanning, <a href="https://anil.recoil.org/papers/2024-ce-llm" target="_blank">LLM-based copilots</a> and scanning of grey literature. We aim to provide co-pilots that augment human decision making to figure out how to categorise interventions much more quickly and accurately, and ultimately...Composable diffing for heterogenous file formats2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/functional-diffsComposable diffing for heterogenous file formats This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is available for being worked on. It may be co-supervised with <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . 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...Building bigraphs of the real world2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/bigraphs-real-worldBuilding bigraphs of the real world This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by <a href="mailto:ra652@cam.ac.uk" target="_blank">Roy Ang</a> . It is co-supervised with <a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> . Bigraphs were originally proposed as a model for the behaviour of ubiquitous systems since interaction between mobile devices is dependent on both placing (locality) and linking (connectivity). However, there has yet to be a bigraph that represents the complete physical world. Such a bigraph will enhance the computer's representation of its location from a simple latitude-longitude pair to a context more familiar to humans: the room it is in, the street the building is on, and the town the street is in. This will allow for location-aware applications and policies about connectivity of...Assessing mangrove literature for conservation evidence2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/mangrove-literature-for-ceAssessing mangrove literature for conservation evidence This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is available for being worked on. It may be co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> and <a href="https://www.zoo.cam.ac.uk/directory/dr-thomas-worthington" target="_blank">Tom Worthington</a> . At the <a href="https://anil.recoil.org/projects/ce" target="_blank">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...Accurate summarisation of threats for conservation evidence literature2024-01-01T00:00:00Z2024-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/accurate-summarisation-for-ceAccurate summarisation of threats for conservation evidence literature This is an idea proposed in 2024 as a Cambridge Computer Science Part III or MPhil project, and is currently being worked on by <a href="mailto:kh807@cam.ac.uk" target="_blank">Kittson Hamill</a> . It is co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . At the <a href="https://anil.recoil.org/projects/ce" target="_blank">Conservation Evidence Copilots</a> project, we are interested in constructing a taxonomy of threats to wildlife from the literature. This involves scanning the body of conservation literature and gathering/synthesising evidence for conservation interventions from a threats perspective. Once the text has been retrieved, it needs to be summarised in a way that is accurate, concise and relevant and verified with human experts. This is particularly important for conservation evidence, where the key findings need to be communicated clearly to inform policy and...Mon 25 Dec 20232023-12-25T00:00:00Z2023-12-25T00:00:00ZRyanGhttps://ryan.freumh.org/2023-12-25.htmlPrevious: <a href="2023-12-18.html" target="_blank">Mon 18 Dec 2023</a> Next: <a href="2024-01-01.html" target="_blank">Mon 1 Jan 2024</a> Added Let’s Encrypt Nameserver Daemon ( lend ) and client ( lenc ) to eon, which provisions TLS certs with the ACME DNS challenge inside the nameserver modifying the trie directly. Required porting ocaml/letsencrypt to Eio 0.12. Added a Capnp RPC interface to provision certificates using this creating Let’s Encrypt Nameserver Cap’n Proto ( lenscap ). There’s still work to do including supporting renewals with capnp callbacks which will probably require sturdy refs, the story for which persisting seems complicated. Read <a href="https://www.mnot.net/blog/2023/12/19/standards-and-centralization" target="_blank">RFC9518</a> on the train up to Scotland. It talks about how technical decentralisation is necessary but not sufficient. <a href="https://www.rfc-editor.org/rfc/rfc9518.html#name-federation" target="_blank">Section
3.1</a> talks about issues with federation in the <a href="https://www.usenix.org/system/files/atc22-holzbauer.pdf" target="_blank">centralisation
of SMTP providers</a> and how XMPP federation is voluntary. Matrix bridges...Mon 18 Dec 20232023-12-18T00:00:00Z2023-12-18T00:00:00ZRyanGhttps://ryan.freumh.org/2023-12-18.htmlPrevious: <a href="2023-12-11.html" target="_blank">Mon 11 Dec 2023</a> Next: <a href="2023-12-25.html" target="_blank">Mon 25 Dec 2023</a> Majorly refactored eon including porting to Eio 0.12 moving from objects to polymorphic varients.NixOS channels2023-12-13T00:00:00Z2023-12-13T00:00:00ZRichardMhttps://mort.io/blog/nixos-channels/I don’t pretend to understand <a href="https://nixos.org/" target="_blank">NixOS</a> configuration fully yet, what with Flakes and channels and so forth. But I did find the following usful to setup channels consistently so that I could have a single config that used both. sudo nix-channel -- list # to list known channels sudo nix-channel -- remove nixos # to remove a channel sudo nix-channel -- add https://nixos.org/channels/nixos-unstable nixos # to go bleeding edge …ultimately resulting in: $ nix-channel -- list # channels are stored per-user, and $(whoami) != root $ sudo nix-channel -- list nixos https://nixos.org/channels/nixos-unstable nixpkgs https://nixos.org/channels/nixos-unstable Upgrading to the latest release is then something like: pushd ~ /rc-files/nixos/ sudo nix-channel -- update nix flake update sudo nixos-rebuild...Mon 11 Dec 20232023-12-11T00:00:00Z2023-12-11T00:00:00ZRyanGhttps://ryan.freumh.org/2023-12-11.htmlPrevious: <a href="2023-12-04.html" target="_blank">Mon 4 Dec 2023</a> Next: <a href="2023-12-18.html" target="_blank">Mon 18 Dec 2023</a> Report for Huwawi Studentship Update Sent to Ben Karniely. My research over the past year has focused on addressing a fundamental limitation in the current Internet architecture - the lack of support for naming physical locations and resolving them to various addressing mechanisms beyond IP. To address this gap, we have proposed the Spatial Name System (SNS), which enables the assignment of hierarchical location-based names and provides global and local resolution schemes. The SNS extends the Domain Name System (DNS), allowing the integration of spatial names into existing applications and opening up new possibilities for sensor networks and augmented reality. Thanks to Huawei’s Hisilicon Studentship I had the opportunity to present this <a href="https://ryan.freumh.org/papers/2023-hotnets-sns.pdf" target="_blank">research</a> at...Mon 4 Dec 20232023-12-04T00:00:00Z2023-12-04T00:00:00ZRyanGhttps://ryan.freumh.org/2023-12-04.htmlPrevious: <a href="2023-11-27.html" target="_blank">Mon 27 Nov 2023</a> Next: <a href="2023-12-11.html" target="_blank">Mon 11 Dec 2023</a> Arrived in Cambridge and finialised my HotNets presentation adding some new slides to expand on how existing DNS mechanisms like DNS-SD can interoperate, illustrating the interface to a geodetic query, etc. Attended the HotNets Conference. Met with Jane Street. HotNets Conference It was great! Feedback on the SNS First and foremost, I recieved some really useful questions, thoughts, and feedback on the SNS. While presenting I was asked: Joshua Smith, Uni of Washington: Q: does this support mobile device? A: that is not our primary use case with these device with their functional primarily defined by their location, though a limitted form of mobility could be supported through existing mechanisms like CNAMEs. Q: what about devices that are inbetween…...Joined the Royal Society fellowships committee2023-12-02T00:00:00Z2023-12-02T00:00:00ZAnilMhttps://anil.recoil.org/notes/royal-society-newtonI joined the <a href="https://royalsociety.org" target="_blank">Royal Society</a> <a href="https://royalsociety.org/grants/newton-international/" target="_blank">Newton International Fellowships</a> <a href="https://royalsociety.org/people/anil-madhavapeddy-36582/" target="_blank">committee</a> to help with selecting bright new scientists from abroad who wish to conduct research in the UK. 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. -- <a href="https://royalsociety.org/grants/newton-international/" target="_blank">The Royal Society</a>PACT Tropical Moist Forest Accreditation Methodology2023-12-01T00:00:00Z2023-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2023-pact-tmf-2We have just released the Tropical Moist Forest v2.0 specification, to update the <a href="https://anil.recoil.org/news/2023-pact-tmf-1" target="_blank">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" target="_blank">Realizing the social value of impermanent carbon credits</a> . <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://www.liverpool.ac.uk/geography-and-planning/research/environmental-change/postgraduates/" target="_blank">James Hartup</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , <a href="https://uk.linkedin.com/in/miranda-lam-a088561b4" target="_blank">Miranda Lam</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.lambdacambridge.com/robin-message" target="_blank">Robin Message</a> , <a href="https://www.plantsci.cam.ac.uk/staff/dr-e-ping-rau" target="_blank">E.-Ping Rau</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.plantsci.cam.ac.uk/staff/dr-charlotte-wheeler" target="_blank">Charlotte Wheeler</a> and <a href="https://www.zoo.cam.ac.uk/directory/abigail-williams" target="_blank">Abby Williams</a> . Working paper at <a href="https://www.cambridge.org/engage/coe/article-details/66b9d9345101a2ffa813e37c" target="_blank">Cambridge Open Engage</a> . <a href="https://www.cambridge.org/engage/coe/article-details/66b9d9345101a2ffa813e37c" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.33774/coe-2024-gvslq" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-pact-tmf.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf" target="_blank">PDF</a>Mon 27 Nov 20232023-11-27T00:00:00Z2023-11-27T00:00:00ZRyanGhttps://ryan.freumh.org/2023-11-27.htmlPrevious: <a href="2023-11-20.html" target="_blank">Mon 20 Nov 2023</a> Next: <a href="2023-12-04.html" target="_blank">Mon 4 Dec 2023</a> Sorted HotNets travel, accomadation, insurance, etc. Travelled to Boston. Recovered from jetlag and had thanksgiving with my American family. Visited Newton, Ludlow, Springfield, North Hampton, Shirley, Boston, and Cambridge. Spent a couple of days preparing for my presentation. Wrote a 2000 word script that I cut to about 1500 words. Ran through presenting it 3 or 4 times, timing it to make sure I wasn’t overrunning.Mon 20 Nov 20232023-11-20T00:00:00Z2023-11-20T00:00:00ZRyanGhttps://ryan.freumh.org/2023-11-20.htmlPrevious: <a href="2023-11-13.html" target="_blank">Mon 13 Nov 2023</a> Next: <a href="2023-11-27.html" target="_blank">Mon 27 Nov 2023</a> HotNets I sent an email out to the SRG mailing list asking if anyone knew anyone at MIT. Jörg Ott said I “may wanna talk to Karen Sollins and John Wroclawski”. Malte said he will be there, and can introduce me to “some of the MIT people who will likely attend from [his] time in PDOS”.Mon 13 Nov 20232023-11-13T00:00:00Z2023-11-13T00:00:00ZRyanGhttps://ryan.freumh.org/2023-11-13.htmlPrevious: <a href="2023-11-06.html" target="_blank">Mon 6 Nov 2023</a> Next: <a href="2023-11-20.html" target="_blank">Mon 20 Nov 2023</a> New Collaborators? Justas Justas suggested collaborating on something with the Adaptive City project sensors. Grenoble Andrzej Duda and Simon Fernandez from Grenoble INP Ensimag LIG Lab are <a href="https://dl.acm.org/doi/pdf/10.1145/2980147.2980152" target="_blank">working</a> <a href="https://arxiv.org/pdf/2110.11766.pdf" target="_blank">on</a> very similar things to the SNS. They reached out to Jon and are keen to collaborate. HotNets I can’t seem to find PDFs for a lot of the HotNets papers. The ACM proceedings doesn’t seem to have PDFs, neither does the conference website (and the publishing chair has not got back to me about the availablility on the website like in previous years), so if the author hasn’t put it up on their personal website it’s not available. Teaching Marked and supervised the last concurrent exercise sheet for Pembroke part IBs. We’ve done 4 supervisions for...Mon 6 Nov 20232023-11-06T00:00:00Z2023-11-06T00:00:00ZRyanGhttps://ryan.freumh.org/2023-11-06.htmlPrevious: <a href="2023-10-30.html" target="_blank">Mon 30 Oct 2023</a> Next: <a href="2023-11-13.html" target="_blank">Mon 13 Nov 2023</a> EEG Matrix Server <a href="matrix-synapse-authentication-with-raven-shibboleth" target="_blank">Following
up</a> on Matrix Shibboleth integration I deployed an EEG Matrix server. Configure synapse for saml2 <a href="https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#saml2_config" target="_blank">https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#saml2_config</a> Had some issues with synapse detecting the pysaml2 module… my personal nixos nixpkgs revision seemed to work. Cambridge raven identity provider (IdP) attributes: <a href="https://wiki.cam.ac.uk/raven/Attributes_released_by_the_Raven_IdP" target="_blank">https://wiki.cam.ac.uk/raven/Attributes_released_by_the_Raven_IdP</a> How to configure pysaml2 attribute mapping (to map to those synapse <a href="https://github.com/matrix-org/synapse/blob/develop/synapse/handlers/saml_handler.py" target="_blank">expects</a> ) <a href="https://pysaml2.readthedocs.io/en/latest/howto/config.html#attribute-map-dir" target="_blank">https://pysaml2.readthedocs.io/en/latest/howto/config.html#attribute-map-dir</a> Register our service provider (SP) with the university <a href="https://wiki.cam.ac.uk/raven/SP_registration" target="_blank">https://wiki.cam.ac.uk/raven/SP_registration</a> at <a href="https://metadata.raven.cam.ac.uk/" target="_blank">https://metadata.raven.cam.ac.uk/</a> . Got the site XML from the path /_matrix/saml2/metadata.xml . In future, maybe we’d want to register with the UK federation. Got the remote url from <a href="https://docs.raven.cam.ac.uk/en/latest/reference-apache-saml2/" target="_blank">https://docs.raven.cam.ac.uk/en/latest/reference-apache-saml2/</a> Got the flu Unfortunately, the rest of the week was a write-off with the flu.BBC report on the new Cambridge supercomputer ("Dawn") announced at the 2023 AI Summit2023-11-02T00:00:00Z2023-11-02T00:00:00ZAnilMhttps://anil.recoil.org/news/48a7ab10-3f49-4978-a00f-c26b64c2cae7-1On the BBC briefly about the Dawn supercomputerMore on Icons2023-11-01T19:12:03Z2023-11-01T19:12:03ZMichaelDhttps://digitalflapjack.com/blog/more-on-icons/This is a sort of follow on to a post I wrote about <a href="/blog/old-icons/" target="_blank">how icons becoming homogenous and hard to distinguish</a> , and inspired by this image <a href="https://twitter.com/flarup/status/1717578963684364578" target="_blank">posted to social media</a> by <a href="https://www.pixelresort.com" target="_blank">Michael Flarup</a> showing the evolution of the macOS default dock over many versions: Whilst I'd be the first to admit to not being a fan of the heavily skeuomorphic apps like the old Notes.app with its faux leather titlebar and the old game center app, I also think that the older icons for notes and such were much more distinctive when you could recognise items by external shape as well as the content. This reminder of what we've lost in terms of both usability and character in our icons inspired me to go back to this vibe with my placeholder icon for a little desktop app I've been writing for myself. The app has the working title of "BAM", and so a literal explosion of shape and colour...Where on Earth is the Spatial Name System?2023-11-01T00:00:00Z2023-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2023-hotnets-sns-1Paper on spatial networks on DNS at <a href="https://dl.acm.org/doi/10.1145/3626111.3628210" target="_blank">HotNets 2023</a> <a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/3626111.3628210" target="_blank">proceedings of the 22nd ACM Workshop on Hot Topics in Networks</a> . <a href="https://dl.acm.org/doi/10.1145/3626111.3628210" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3626111.3628210" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-hotnets-sns.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-hotnets-sns.pdf" target="_blank">PDF</a>Nature Climate Change paper on impermanent carbon credits2023-11-01T00:00:00Z2023-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2023-ncc-permanence-2Our paper on valuing impermanent carbon credits has been published at <a href="https://www.nature.com/articles/s41558-023-01815-0" target="_blank">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" target="_blank">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" target="_blank">cam.ac.uk</a> , and <a href="https://www.miragenews.com/new-method-may-boost-trust-in-carbon-credits-1113599/" target="_blank">Mirage</a> . <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , <a href="https://www.lse.ac.uk/granthaminstitute/profile/frank-venmans/" target="_blank">Frank Venmans</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://business-school.exeter.ac.uk/economics/research/subject-themes/profile/index.php?web_id=ben_groom" target="_blank">Ben Groom</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> . Journal paper in <a href="https://www.nature.com/articles/s41558-023-01815-0" target="_blank">Nature Climate Change</a> (vol 13 issue 11). <a href="https://www.nature.com/articles/s41558-023-01815-0" target="_blank">URL</a> (nature.com) <a href="https://doi.org/10.1038/s41558-023-01815-0" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-ncc-permanence.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-ncc-permanence.pdf" target="_blank">PDF</a>First preprint of LIFE biodiversity metric available2023-11-01T00:00:00Z2023-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-life-1The first preprint on our new <a href="https://anil.recoil.org/projects/life" target="_blank">LIFE</a> metric for global biodiversity is now available. It is under review, so feedback would be very welcome. <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.zoo.cam.ac.uk/directory/dr-tom-ball" target="_blank">Thomas Ball</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.cambridgeconservation.org/about/people/andy-arnell/" target="_blank">Andy Arnell</a> , <a href="https://www.cambridgeconservation.org/about/people/daniele-baisero/" target="_blank">Daniele Baisero</a> , <a href="https://www.cambridgeconservation.org/about/people/paz-duran/" target="_blank">América Paz Durán</a> , <a href="https://www.york.ac.uk/sei/staff/jonathan-green/" target="_blank">Jonathan Green</a> , <a href="https://www.zoo.cam.ac.uk/directory/rhys-green" target="_blank">Rhys Green</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> . Journal paper in <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">Philosophical Transactions of the Royal Society</a> (vol 380 issue 1917). <a href="https://royalsocietypublishing.org/doi/10.1098/rstb.2023.0327" target="_blank">URL</a> (royalsocietypublishing.org) <a href="https://doi.org/10.1098/rstb.2023.0327" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-life.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2024-life.pdf" target="_blank">PDF</a>Mon 30 Oct 20232023-10-30T00:00:00Z2023-10-30T00:00:00ZRyanGhttps://ryan.freumh.org/2023-10-30.htmlPrevious: <a href="2023-10-23.html" target="_blank">Mon 23 Oct 2023</a> Next: <a href="2023-11-06.html" target="_blank">Mon 6 Nov 2023</a> HotNets Organised travel dates, travel, and accommodation for HotNets. I was awarded a Queens’ College Perry Travel Award to the value of £740! Met with Anil Agreed to schedule dates to visit NYC and then find a time to meet Jane Street to discuss the polyglot package management project proposal. I’m going to take the train from Boston to NYC! Anil said I’ve got to get a <a href="https://en.wikipedia.org/wiki/Junior_Ranger_Program" target="_blank">Junior Ranger
Badge</a> from a <a href="https://en.wikipedia.org/wiki/List_of_National_Park_System_areas_in_New_York" target="_blank">National
Park in NYC</a> . Anil recommended live blogging the conference on Mastodon. Talked about what a HotNets presentation could look like, and whether a live demo was feasible. Maybe I could pull AEON and Patrick’s OCaml R-Tree together into something workable. I think while very cool the APIs just aren’t there for the AR demo on a hololens. A smartphone (e.g. iPhone LIDAR)...Mon 23 Oct 20232023-10-23T01:00:00Z2023-10-23T01:00:00ZRyanGhttps://ryan.freumh.org/2023-10-23.htmlPrevious: <a href="2023-10-16.html" target="_blank">Mon 16 Oct 2023</a> Next: <a href="2023-10-30.html" target="_blank">Mon 30 Oct 2023</a> HotNets, HotNets, HotNets Don’t try and rewrite your whole paper a day before the deadline. Got it in, and need to think about travel and accomadation next. The <a href="https://conferences.sigcomm.org/hotnets/2023/program.html" target="_blank">program</a> has been published, and I’m on the first day at 1:15pm - 2:45pm in ‘Session 3: The architecture of the Internet, and datacenter networks’. SIGCOMM SNS Magnus and I threw some ideas around on Thurday morning. Apple’s ARKit might be something to look at in lieu of a Vision Pro. We also discussed getting some experience with iPhone’s lidar precision, how to bootstrap a connection, the issues with civic name encodings, and the necessity to get some estimation of load. Regarding an implementation, once we have a bit more of an idea of what it might look like, <a href="https://github.com/RyanGibb/aeon" target="_blank">github.com/RyanGibb/aeon</a> would be a good...Cambridge Zero highlights University efforts at Climate Week NYC2023-10-18T01:00:00Z2023-10-18T01:00:00ZAnilMhttps://anil.recoil.org/notes/mission-possibleI was on stage in New York for <a href="https://www.cam.ac.uk/news/cambridge-zero-highlights-university-efforts-at-climate-week-nyc" target="_blank">Mission Possible</a> during <a href="https://www.climateweeknyc.org" target="_blank">NYC Climate Week</a> . I was there with <a href="https://www.cisl.cam.ac.uk/directory/emily-shuckburgh" target="_blank">Emily Shuckburgh</a> and we met with a lot of Cambridge alumni who are all engaged with climate change related activities -- either directly in their careers, or through a side interest. The major highlights on the discussions with alumni centred around agency: a lot of them were wondering how to combine the evidence coming out Cambridge research and combine it with real policy action. A number of the alumni are obviously highly successful in their individual careers, and so the University helping to glue this together would potentially result in valuable actions that might not otherwise come together. This reminded me strongly of the discussions we had in Pembroke a little while back when <a href="https://www.cisl.cam.ac.uk/directory/emily-shuckburgh" target="_blank">Emily Shuckburgh</a> chaired my talk...Mon 16 Oct 20232023-10-16T01:00:00Z2023-10-16T01:00:00ZRyanGhttps://ryan.freumh.org/2023-10-16.htmlPrevious: <a href="2023-10-09.html" target="_blank">Mon 9 Oct 2023</a> Next: <a href="2023-10-23.html" target="_blank">Mon 23 Oct 2023</a> HotNets Converted the SNS paper to the ACM final format. Spent way to long figuring out how to make the paper open access. While trying to figure this out I spoke to Jon, Chris, Ardwin, Justas, Sadiq, Helen, and Mort. Mort explained the difference between the copyright, licensing publishing rights, and open access. In the end, we had to use our institutional email addresses to have the ACM’s open access policy kick in. Addressed Magnus’ comments on the paper, and fixed some citations. Pulled the discussion into the introduction. Hibernia Had an idea regarding the <a href="./2023-10-09.html#energy" target="_blank">energy</a> saving ‘wake-up’ device: the network infrastructure has to be running anyway, so why not push this functionality into the router, which are mostly running Linux now anyway. We...Mon 9 Oct 20232023-10-09T01:00:00Z2023-10-09T01:00:00ZRyanGhttps://ryan.freumh.org/2023-10-09.htmlNext: <a href="2023-10-16.html" target="_blank">Mon 16 Oct 2023</a> After trying to use Obsidian, a remarkable E-ink tablet, Logseq, emacs org-mode, and plaintext files, I’m using a paper notebook research log for the upcoming academic year and hopefully beyond. I’ve tried this before without much success, but this time I plan to use it more thoughtfully. I’m also trying something new in typing up my weekly notes in a web log. So last week… Eilean I’ve had a couple of requests to get <a href="https://github.com/RyanGibb/eilean-nix" target="_blank">Eilean</a> into a useable state, so I’ve tested (and fixed a bunch of bugs in) it’s deployment on a fresh VM from the NixOS template provided, and added a comprehensive getting started document. Work to be done includes using ACME DNS-01 challenges to provision TLS certificates and automatically incrementing the DNS SOA serial number. Having a modular and...Information Flow Tracking for Heterogeneous Compartmentalized Software2023-10-01T01:00:00Z2023-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-raid-deluminator-1Paper on DIFC Deluminator interface at <a href="https://dl.acm.org/doi/10.1145/3607199.3607235" target="_blank">RAID 2023</a> <a href="https://zatkh.github.io/" target="_blank">Zahra Tarkhani</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/3607199.3607235" target="_blank">proceedings of the 26th International Symposium on Research in Attacks, Intrusions and Defenses</a> . <a href="https://dl.acm.org/doi/10.1145/3607199.3607235" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3607199.3607235" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-raid-deluminator.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-raid-deluminator.pdf" target="_blank">PDF</a>Enabling Lightweight Privilege Separation in Applications with MicroGuards2023-10-01T01:00:00Z2023-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-acns-microguards-1Paper on microgrounds memory API at <a href="https://link.springer.com/chapter/10.1007/978-3-031-41181-6_31" target="_blank">ACNSW</a> <a href="https://zatkh.github.io/" target="_blank">Zahra Tarkhani</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://link.springer.com/10.1007/978-3-031-41181-6_31" target="_blank">applied Cryptography and Network Security Workshops</a> . <a href="https://link.springer.com/10.1007/978-3-031-41181-6_31" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/978-3-031-41181-6_31" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-acns-microguards.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-acns-microguards.pdf" target="_blank">PDF</a>Functional Programming for the Planet2023-09-05T01:00:00Z2023-09-05T01:00:00ZAnilMhttps://anil.recoil.org/news/981c00b5-32c0-4cac-a387-6c945dfa9934-1Keynoted at ICFP 2023 on Functional Programming for the PlanetState of the OCaml Platform 20232023-09-01T01:00:00Z2023-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-ocaml-platform-1We deliver the annual presentation about the OCaml Platform in the OCaml Workshop at ICFP 2023. 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. <a href="https://github.com/tmattio" target="_blank">Thibaut Mattio</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> and <a href="https://github.com/dra27" target="_blank">David Allsopp</a> . Paper in the <a href="https://icfp23.sigplan.org/details/ocaml-2023-papers/15/State-of-the-OCaml-Platform-2023" target="_blank">proceedings of the 2023 OCaml Users and Developers Workshop</a> . <a href="https://icfp23.sigplan.org/details/ocaml-2023-papers/15/State-of-the-OCaml-Platform-2023" target="_blank">URL</a> (icfp23.sigplan.org) <a href="https://anil.recoil.org/papers/2023-ocaml-platform.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-ocaml-platform.pdf" target="_blank">PDF</a>Scheduling for Reduced Tail Latencies in Highly Utilised Datacenters2023-09-01T01:00:00Z2023-09-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/murmurationScheduling for Reduced Tail Latencies in Highly Utilised Datacenters This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and has been completed by <a href="https://www.cl.cam.ac.uk/~sv440/" target="_blank">Smita Vijayakumar</a> . It was co-supervised with <a href="https://www.cst.cam.ac.uk/people/ek264" target="_blank">Evangelia Kalyvianaki</a> . Modern datacenters have become the backbone for running diverse workloads that increas- ingly comprise data-parallel computational jobs. Due to the ease of use and diversity of resources they host there has been an exponential rise in the demand for datacenters leading to high volume of traffic. Datacenters execute thousands of jobs by scheduling billions of tasks every day. To meet these demands, datacenters providers operate their clusters at levels of high utilisation. We show that under such conditions existing scheduling designs impose large wait times on tail...Eio 1.0 – Effects-based IO for OCaml 52023-09-01T01:00:00Z2023-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-ocaml-eio-1An update on the OCaml EIO library at the OCaml Workshop 2023 <a href="https://github.com/https://roscidus.com" target="_blank">Thomas Leonard</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://github.com/haesbaert" target="_blank">Christiano Haesbaert</a> , <a href="https://www.lortex.org" target="_blank">Lucas Pluvinage</a> , <a href="https://github.com/polytypic" target="_blank">Vesa Karvonen</a> , <a href="https://github.com/Sudha247" target="_blank">Sudha Parimala</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , <a href="https://github.com/balat" target="_blank">Vincent Balat</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://icfp23.sigplan.org/details/ocaml-2023-papers/5/Eio-1-0-Effects-based-IO-for-OCaml-5" target="_blank">proceedings of the 2023 OCaml Users and Developers Workshop</a> . <a href="https://icfp23.sigplan.org/details/ocaml-2023-papers/5/Eio-1-0-Effects-based-IO-for-OCaml-5" target="_blank">URL</a> (icfp23.sigplan.org) <a href="https://anil.recoil.org/papers/2023-ocaml-eio.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-ocaml-eio.pdf" target="_blank">PDF</a>OneDrive and NixOS2023-08-22T01:00:00Z2023-08-22T01:00:00ZRichardMhttps://mort.io/blog/nixos-onedrive/https://github.com/abraunegg/onedrive/blob/master/docs/SharePoint-Shared-Libraries.md https://github.com/NixOS/nixpkgs/pull/77734#issuecomment-575874225 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&data=05%7C02%7Crmm1002%40universityofcambridgecloud.onmicrosoft.com%7C8792d760606b4a3e80d108dcbd47b53a%7C49a50445bdfa4b79ade3547b4f3986e9%7C1%7C0%7C638593362895323916%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=qPJyO0hTLRnrkbssZ0Y4cLfhaygDiEQtlQ0pwAjgMwM%3D&r...Pandas vs Efficiency2023-08-07T11:21:45Z2023-08-07T11:21:45ZMichaelDhttps://digitalflapjack.com/blog/pandas-vs-efficiency/As part of my role at the <a href="https://4c.cst.cam.ac.uk" target="_blank">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" target="_blank">pandas</a> . Pandas is a popular library that makes working with large arrays of data easier. Unlike <a href="https://numpy.org" target="_blank">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...Why using Slack is bad for GeoTIFF Rasters2023-08-03T14:48:18Z2023-08-03T14:48:18ZMichaelDhttps://digitalflapjack.com/blog/slack-bad-for-gis-rasters/In the past <a href="/blog/some-notes-on-processing-and-display-geospatial-data/" target="_blank">I've written about</a> how <a href="https://www.ogc.org/standard/geotiff/" target="_blank">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/" target="_blank">QGIS</a> or libraries such as <a href="https://gdal.org" target="_blank">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?): Perhaps I'm sufficiently excited by the notion of where the moose can be found that I want to share this with one of my colleagues via our workplace <a href="https://slack.com/" target="_blank">Slack</a> channel. So I drop the file in, they download it, but then they complain that the image is now all wrong: If we zoom out a bit, we find not only does the image look funny, it's...Meta Properties of Financial Smart Contracts2023-08-01T01:00:00Z2023-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/metaproperties-for-smart-contractsMeta Properties of Financial Smart Contracts This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and has been completed by <a href="https://derekhsorensen.com" target="_blank">Derek Sorensen</a> . It was co-supervised with <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> . Financial smart contracts routinely manage billions of US dollars worth of digital assets, making bugs in smart contracts extremely costly, and are also increasingly being used in other areas of endeavour such as carbon credit tracking. Because of this, much work has been done in formal verification of smart contracts to prove a contract correct with regards to its specification. However, financial smart contracts have complicated specifications, and it is not all straightforward for humans to write one which correctly captures all of its intended high-level behaviors. To mitigate this...Computational Models for Scientific Exploration2023-08-01T01:00:00Z2023-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/computational-scientific-methodsComputational Models for Scientific Exploration This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . It is co-supervised with <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> . The modern scientific method has become highly computational, but computer science hasn't entirely caught up and is sometimes hindering research progress. We use climate science and ecology computation needs as a case study, we are conducting a systematic study in the sources of uncertainty in these fields. We are also designing and implementing a specification language and hermetic computation environment that empowers climate scientists and ecologists to create less ambiguous, more precise and testable scientific methodologies and results, while preserving the ability to explore...Preprint on the social value of impermanent carbon credits2023-07-01T01:00:00Z2023-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-ncc-permanence-1We have uploaded a preprint of our <a href="https://anil.recoil.org/projects/4c" target="_blank">4C</a> paper on valuing impermanent carbon credits, by using the <a href="https://en.wikipedia.org/wiki/Social_cost_of_carbon" target="_blank">Social Cost of Carbon</a> as a basis for a discount function into the future. Comments and feedback are most welcome. <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , <a href="https://www.lse.ac.uk/granthaminstitute/profile/frank-venmans/" target="_blank">Frank Venmans</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://business-school.exeter.ac.uk/economics/research/subject-themes/profile/index.php?web_id=ben_groom" target="_blank">Ben Groom</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> . Journal paper in <a href="https://www.nature.com/articles/s41558-023-01815-0" target="_blank">Nature Climate Change</a> (vol 13 issue 11). <a href="https://www.nature.com/articles/s41558-023-01815-0" target="_blank">URL</a> (nature.com) <a href="https://doi.org/10.1038/s41558-023-01815-0" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-ncc-permanence.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-ncc-permanence.pdf" target="_blank">PDF</a>OCaml wins the ACM Programming Language Software award2023-06-19T01:00:00Z2023-06-19T01:00:00ZAnilMhttps://anil.recoil.org/notes/acm-sigplan-awardI 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" target="_blank">ACM Programming Languages Software Award for 2023</a> . 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. 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. The prestigious Programming Languages Software Award is given annually "to an institution or individual(s) to recognise the development of a software system that has had a significant impact on programming language research, implementations, and tools," ACM says. --...Developing OCaml with Nix2023-06-07T01:00:00Z2023-06-07T01:00:00ZRyanGhttps://ryan.freumh.org/ocaml-nix.htmlPublished Wed 7 Jun 2023. Last update Wed 7 Jun 2023. Lately, I’ve been writing a significant amount of OCaml as part of my PhD. Instead of using the OCaml package manager (opam) command-line interface (CLI) for these projects, I prefer to use <a href="./nix.html" target="_blank">Nix</a> to provide declarative and reproducible development environments and builds. However I still want to be able to interoperate with opam’s file format and access packages from the opam repository. In this blog post we’ll walk through creating a flake.nix file to do this for a hello world project at <a href="https://github.com/RyanGibb/ocaml-nix-hello" target="_blank">github.com/RyanGibb/ocaml-nix-hello</a> . Our aim is to make building an OCaml project, and setting up a development environment, as simple as one command. Nix? I’ve said that Nix can provide declarative and reproducible environments and builds. Let’s break down what this...PACT Tropical Moist Forest Accreditation Methodology2023-06-01T01:00:00Z2023-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-pact-tmf-1We 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. <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://www.liverpool.ac.uk/geography-and-planning/research/environmental-change/postgraduates/" target="_blank">James Hartup</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , <a href="https://uk.linkedin.com/in/miranda-lam-a088561b4" target="_blank">Miranda Lam</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.lambdacambridge.com/robin-message" target="_blank">Robin Message</a> , <a href="https://www.plantsci.cam.ac.uk/staff/dr-e-ping-rau" target="_blank">E.-Ping Rau</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.plantsci.cam.ac.uk/staff/dr-charlotte-wheeler" target="_blank">Charlotte Wheeler</a> and <a href="https://www.zoo.cam.ac.uk/directory/abigail-williams" target="_blank">Abby Williams</a> . Working paper at <a href="https://www.cambridge.org/engage/coe/article-details/66b9d9345101a2ffa813e37c" target="_blank">Cambridge Open Engage</a> . <a href="https://www.cambridge.org/engage/coe/article-details/66b9d9345101a2ffa813e37c" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.33774/coe-2024-gvslq" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2023-pact-tmf.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2023-pact-tmf.pdf" target="_blank">PDF</a>Build your own Stacks Project in 10 minutes2023-05-14T01:00:00Z2023-05-14T01:00:00ZJonShttps://www.forester-notes.org/jms-0052/<a href="https://www.forester-notes.org/stacks-project/" target="_blank">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 tags system being the most striking. 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" target="_blank">Tags explained</a> , <a href="https://www.forester-notes.org/stacks-project/" target="_blank">The Stacks Project</a> ). 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/" target="_blank">Stacks project</a> and <a href="https://www.forester-notes.org/kerodon/" target="_blank">Kerodon</a> use a cluster of software called <a href="https://www.forester-notes.org/gerby/" target="_blank">Gerby</a> ,...Credit credibility threatens forests2023-05-01T01:00:00Z2023-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2023-carbon-credibility-1Our perspective in <a href="https://science.org" target="_blank">Science</a> magazine appeared this week on the credibility of carbon credits and its importance for tropical forest protection. 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. <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , Pedro H. S. Brancalion , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://www.cccep.ac.uk/profile/ben-filewod/" target="_blank">Ben Filewod</a> , <a href="https://business-school.exeter.ac.uk/economics/research/subject-themes/profile/index.php?web_id=ben_groom" target="_blank">Ben Groom</a> , <a href="https://www.conservation.cam.ac.uk/directory/alejandro-guizar-coutino" target="_blank">Alejandro Guizar-Coutiño</a> , <a href="https://www.bangor.ac.uk/staff/sens/julia-patricia-gordon-jones-010356/en" target="_blank">Julia P.G. Jones</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> ,...WSL2 / Windows 112023-03-13T00:00:00Z2023-03-13T00:00:00ZRichardMhttps://mort.io/blog/windows-wsl2/I naively thought I could just use WSL2 on Windows on my new laptop. But it turned out this was the year of Linux on the Laptop for me. For posterity here’s the crib sheet though. wsl -- set-default-version 2 sudo apt update && sudo apt upgrade - yy sudo apt install locales sudo locale-gen en_GB.UTF-8 sudo apt install - yy emacs-gtk direnv gedit git clone ./..rc-files ./scripts/install.sh Some Windows native packages using <a href="https://chocolatey.org/" target="_blank">Chocolatey</a> choco install signal skype wire slack zoom choco install git choco install rustup.install rust-analyzer python choco install docker choco install powertyos dropbox googledrive wiztree However, choco install texlive didn’t work so well, so I fell back to WSL2: sudo apt install latexmk texlive-latex-base texlive-xetex ttf-mscorefonts-installer . Use MS...Leveraging Scientific Innovation and AI to Scale Carbon Markets2023-03-07T00:00:00Z2023-03-07T00:00:00ZAnilMhttps://anil.recoil.org/news/ce64a918-ff52-4116-b1ee-256f08e6e7f1-1Discussion with Mantle Labs about carbon creditsA Case for Planetary Computing2023-03-01T00:00:00Z2023-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2024-planetary-computing-1Preprint of planetary computing paper <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://mynameismwd.org" target="_blank">Michael Dales</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://ameliaholcomb.github.io" target="_blank">Amelia Holcomb</a> , <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> , <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">Thomas Swinfield</a> , <a href="https://www.conservation.cam.ac.uk/staff/dr-alison-eyres" target="_blank">Alison Eyres</a> , <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="http://arxiv.org/abs/2303.04501" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/2303.04501" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2303.04501" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2024-planetary-computing.bib" target="_blank">BIB</a>OCaml operators2023-02-26T00:00:00Z2023-02-26T00:00:00ZRichardMhttps://mort.io/blog/ocaml-operators/An <a href="https://www.brendanlong.com/ocaml-operator-cheatsheet.html" target="_blank">OCaml operator
cheatsheet</a> for <a href="https://ocaml.org/" target="_blank">OCaml</a> operators that I have found useful.Software folklore2023-02-26T00:00:00Z2023-02-26T00:00:00ZRichardMhttps://mort.io/blog/software-folklore/Truly cursed bugs that have become <a href="http://beza1e1.tuxen.de/lore/" target="_blank">software
folklore</a> .Species distribution modelling using CNNs2023-02-01T00:00:00Z2023-02-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/sdms-with-cnnsSpecies distribution modelling using CNNs This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://github.com/emorris7" target="_blank">Emily Morris</a> . It was co-supervised with <a href="https://coomeslab.org" target="_blank">David A Coomes</a> . The goal of this project is to compare the performance of <a href="https://biodiversityinformatics.amnh.org/open_source/maxent/" target="_blank">MaxEnt</a> techniques to the performance of a CNN model for the task of species distribution modeling. The CNN model will use remote sensing data as part of the input features. The remote sensing data we plan on using is a combination of LULC data (e.g. Dynamic World) and satellite imagery (Planet/Landsat 8/Sentinel 2). We will also use more classical environmental variables from WorldClim and soil data. To evaluate it, we will focus on <a href="https://en.wikipedia.org/wiki/Protea" target="_blank">proteas</a> for the species distribution modeling task. We have two observation data...How to update a Tezos Smart-Contract2023-01-25T11:28:59Z2023-01-25T11:28:59ZMichaelDhttps://digitalflapjack.com/blog/tezos-contract-upgrades/How to update a Smart-Contract The <a href="https://4c.cst.cam.ac.uk" target="_blank">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/" target="_blank">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? The problem is this: any bit of software evolves...Bibliography Management2023-01-17T00:00:00Z2023-01-17T00:00:00ZRyanGhttps://ryan.freumh.org/bibliography-management.htmlPublished Tue 17 Jan 2023. Last update Wed 7 Jun 2023. I recently received a request to outline my process for managing bibliographies. Here’s a breakdown of my approach. Bibliography Generation I <a href="https://git.freumh.org/ryan/nixos/src/commit/19e643e3117d8d83dc86e5cf7a7cecc668f68a49/modules/personal/gui/extra.nix#L12" target="_blank">use</a> the <a href="https://www.zotero.org/" target="_blank">Zotero</a> application as a reference manager. The Zotero Firefox <a href="https://www.zotero.org/download/connectors" target="_blank">connector</a> <a href="#fn1" target="_blank">1</a> lets me add papers from URLs. Zotero is quite smart about grabbing the metadata from the URL or PDF itself. The view I have from Zotero is: While Zotero is great for storing local copies of papers and generating bibliographies, I don’t find it to be optimal for organisation and note-taking. Instead, I use the <a href="https://retorque.re/zotero-better-bibtex/" target="_blank">Zotero Better
Bibtex</a> plugin to export all the items in my library <a href="#fn2" target="_blank">2</a> into a <a href="https://ctan.org/pkg/biblatex" target="_blank">BibLaTeX</a> file that I reference items in with another application. Note-taking I’m using <a href="https://obsidian.md/" target="_blank">Obsidian</a> as a...OCaml.org: recapping 2022 and queries on the Fediverse2023-01-02T00:00:00Z2023-01-02T00:00:00ZAnilMhttps://anil.recoil.org/notes/recapping-ocaml-22I 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" target="_blank">https://watch.ocaml.org</a> .The role of urban vegetation in human health2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/urban-vegetationThe role of urban vegetation in human health This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://ancazugo.github.io/" target="_blank">Andres Zuñiga-Gonzalez</a> . It is co-supervised with <a href="https://www.arct.cam.ac.uk/people/dr-ronita-bardhan" target="_blank">Ronita Bardhan</a> . Cities around the globe have experienced unprecedented growth in recent years, becoming centres of economic, cultural, and social hubs for human activity. Rapid urbanisation has transformed the physical landscape and significantly altered local climates, with predictions stating that cities will harbour more than 70% of the population by the middle of the 21st century. This has also changed the climatic variables to which humans are most directly exposed. Combining global climatic changes with localised human activities has created new challenges that cities must solve to be...Reverse emulating agent-based models for policy simulation2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/rev-abmReverse emulating agent-based models for policy simulation This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://www.linkedin.com/in/pedro-marques-sousa/" target="_blank">Pedro Sousa</a> . It was co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . 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 "levers" (or input parameters) to steer the model towards the envisioned outcomes. To unlock a more natural workflow, this project investigates reverse emulation , a novel approach that streamlines policy design using probabilistic machine learning...Remote Sensing of Nature2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/rsnRemote Sensing of Nature Measuring the world's forest carbon and biodiversity is made possible by remote sensing instruments, ranging from satellites in space (Landsat, Sentinel, GEDI) to ground-based sensors (ecoacoustics, camera traps, moisture sensors) that take regular samples and are processed into time-series metrics and actionable insights for conservation and human development. However, the algorithms for processing this data are challenging as the data is highly multimodal (multispectral, hyperspectral, synthetic aperture radar, or lidar), often sparsely sampled spatially, and not in a continuous time series. I work on various algorithms and software and hardware systems we are developing to improve the datasets we have about the surface of the earth. Mapping nature on earth...Mapping LIFE on Earth2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/lifeMapping LIFE on Earth 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...Interspatial Networking with DNS2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/interspatial-networkingInterspatial Networking with DNS This is an idea proposed in 2023 as a Cambridge Computer Science PhD topic, and is currently being worked on by <a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> . It is co-supervised with <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . The existing Internet architecture lacks support for naming locations and resolving them to the myriad addressing mechanisms we use beyond IP. While there have been many advances in addressing locations via multiple routing schemes , it remains difficult to refer to location-based services via logical names . This in turn makes it difficult to deploy network services that can be referred to by a stable name that specifies a given location, and that resolves to the addresses of the devices in that space. This matters because there are a broad class of network-connected devices with a physical...Improving Resilience of ActivityPub Services2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/activitypub-resilienceImproving Resilience of ActivityPub Services This is an idea proposed in 2023 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Gediminas Lelešius</a> . The original goal of the project was to improve the resilience of the distributed social networking protocol "ActivityPub", by caching the content on multiple instances and serving them in case the origin instance goes down. The project uses public-key cryptography to ensure data integrity, build a network of public key servers and verifiers and use that consensus instead of relying on individual servers to provide trustworthy data. The core deliverable is a key server gathering and serving public keys, a verifier checking the entries of that server, and a modified Mastodon server rescuing failed ActivityPub requests using an...Assessing high-performance lightweight compression formats for geospatial computation2023-01-01T00:00:00Z2023-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/compressive-geospatialAssessing high-performance lightweight compression formats for geospatial computation This is an idea proposed in 2023 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://github.com/omarathon" target="_blank">Omar Tanner</a> . It was co-supervised with <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> . Geospatial data processing can benefit from by applying lightweight compression techniques to data in GeoTIFF format, addressing the challenge of modern CPU bandwidth surpassing RAM bandwidths. This project will explore how to mitigate the impact of poor cache locality and the resulting memory bottlenecks by leveraging CPU superscalar capabilities and SIMD instructions. By implementing SIMD-optimised compression, data can remain compressed in RAM and closer to the CPU caches, facilitating faster access and alleviating memory constraints....Hacking on the Remarkable 22022-12-17T00:00:00Z2022-12-17T00:00:00ZRyanGhttps://ryan.freumh.org/remarkable2.htmlPublished Sat 17 Dec 2022. Last update Wed 7 Jun 2023. I’ve recently had the good fortune to come into possession of a <a href="https://remarkable.com/store/remarkable-2" target="_blank">reMarkable 2</a> E-Ink writing tablet. This device runs a modified version of Linux, and contains the following message in the copyrights and licenses information: GPLv3 Compliance The General Public License version 3 and the Lesser General Public License version 3 also requires you as an end-user to be able to access your device to be able to modify the copyrighted software licensed under these licenses running on it. To do so, this device acts as an USB ethernet device, and you can connect using the SSH protocol using the username ‘root’ and the password ‘<password>’. As a result of this, there is a vibrant community of hacking for the remarkable. This blog post will walk...Nix2022-12-14T00:00:00Z2022-12-14T00:00:00ZRyanGhttps://ryan.freumh.org/nix.htmlPublished Wed 14 Dec 2022. Last update Mon 3 Feb 2025. Tags: <a href="/technology.html" target="_blank">technology</a> . Nix snowflake <a href="#fn1" target="_blank">1</a> Nix is a deployment system that uses cryptographic hashes to compute unique paths for components <a href="#fn2" target="_blank">2</a> that are stored in a read-only directory: the Nix store, at /nix/store/<hash>-<name> . This provides several benefits, including concurrent installation of multiple versions of a package, atomic upgrades, and multiple user environments <a href="#ref-dolstraNixSafePolicyFree2004" target="_blank">[1]</a> . Nix uses a declarative domain-specific language (DSL), also called Nix, to build and configure software. The snippet used to deploy the DNS server is in fact a Nix expression. This example doesn’t demonstrate it, but Nix is Turing complete. Nix does not, however, have a type system. We use the DSL to write derivations for software, which...Hillingar: MirageOS Unikernels on NixOS2022-12-14T00:00:00Z2022-12-14T00:00:00ZRyanGhttps://ryan.freumh.org/hillingar.htmlPublished Wed 14 Dec 2022. Last update Mon 3 Feb 2025. Tags: <a href="/projects.html" target="_blank">projects</a> . A version of this blog post can be found on the Tarides website: <a href="https://tarides.com/blog/2022-12-14-hillingar-mirageos-unikernels-on-nixos" target="_blank">https://tarides.com/blog/2022-12-14-hillingar-mirageos-unikernels-on-nixos</a> . An arctic mirage <a href="#ref-lehnNovayaZemlyaEffect1979" target="_blank">[1]</a> <a href="#fn1" target="_blank">1</a> Introduction The Domain Name System (DNS) is a critical component of the modern Internet, allowing domain names to be mapped to IP addresses, mailservers, and more <a href="#fn2" target="_blank">2</a> . This allows users to access services independent of their location in the Internet using human-readable names. We can host a DNS server ourselves to have authoritative control over our domain, protect the privacy of those using our server, increase reliability by not relying on a third party DNS provider, and allow greater customization of the records served (or the behaviour of the server itself). However, it can be quite...Financing Forests: A Credible Approach towards Halting Tropical Deforestation2022-11-16T00:00:00Z2022-11-16T00:00:00ZAnilMhttps://anil.recoil.org/news/bc9da6fc-9419-4f18-9db9-c13b1a4a859f-1Wednesday seminar on financing forests using carbon credits17th William Pitt Seminar - Who's in Charge?2022-11-01T00:00:00Z2022-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/a26475b5-c169-478e-b88e-be5cd1f2aff8-1I 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.Verifying distributed systems with Isabelle/HOL2022-10-12T01:00:00Z2022-10-12T01:00:00ZMartinKhttp://martin.kleppmann.com/2022/10/12/verifying-distributed-systems-isabelle.htmlThis post also appears on <a href="https://lawrencecpaulson.github.io/2022/10/12/verifying-distributed-systems-isabelle.html" target="_blank">Larry Paulson’s blog</a> . We use distributed systems every day in the form of internet services. These systems are very useful, but also challenging to implement because networks are unpredictable. Whenever you send a message over the network, it is likely to arrive quite quickly, but it’s possible that it might be delayed for a long time, or never arrive, or arrive several times. When you send a request to another process and don’t receive a response, you have no idea what happened: was the request lost, or has the other process crashed, or was the response lost? Or maybe nothing was lost at all, but a message has simply been delayed and may yet arrive. There is no way of knowing what happened, because unreliable message-passing is the only way how processes can communicate....The 2nd ed of Real World OCaml is available in shops2022-10-01T01:00:00Z2022-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/rwo-2I'm delighted to report that the second edition of <a href="https://realworldocaml.org" target="_blank">Real World OCaml</a> is now available from Cambridge University Press! It's also freely available <a href="https://realworldocaml.org" target="_blank">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" target="_blank">Tarides</a> . [… <a href="https://anil.recoil.org/news/rwo-2" target="_blank">105 words</a> ] <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/yminsky" target="_blank">Yaron Minsky</a> . Book published by <a href="https://www.cambridge.org/core/books/real-world-ocaml-functional-programming-for-the-masses/052E4BCCB09D56A0FE875DD81B1ED571" target="_blank">Cambridge University Press</a> . <a href="https://www.cambridge.org/core/books/real-world-ocaml-functional-programming-for-the-masses/052E4BCCB09D56A0FE875DD81B1ED571" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.1017/9781009129220" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/rwo.bib" target="_blank">BIB</a>Homogeneous Builds with OBuilder and OCaml2022-09-01T01:00:00Z2022-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2022-oud-ocurrent-1Paper on our incremental computation DSL ocurrent presented in OCaml Workshop 2022 Tim McGilchrist , <a href="https://github.com/dra27" target="_blank">David Allsopp</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://github.com/MisterDA" target="_blank">Antonin Décimo</a> , <a href="https://github.com/https://roscidus.com" target="_blank">Thomas Leonard</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/kit-ty-kate" target="_blank">Kate Deplaix</a> . Paper in the <a href="https://icfp22.sigplan.org/details/ocaml-2022-papers/8/Homogeneous-builds-with-OBuilder-and-OCaml" target="_blank">proceedings of the 2022 OCaml Users and Developers Workshop</a> . <a href="https://icfp22.sigplan.org/details/ocaml-2022-papers/8/Homogeneous-builds-with-OBuilder-and-OCaml" target="_blank">URL</a> (icfp22.sigplan.org) <a href="https://anil.recoil.org/papers/2022-oud-ocurrent.bib" target="_blank">BIB</a>Nim2022-08-30T01:00:00Z2022-08-30T01:00:00ZRyanGhttps://ryan.freumh.org/nim.htmlPublished Tue 30 Aug 2022. Last update Tue 30 Aug 2022. Tags: <a href="/projects.html" target="_blank">projects</a> . I recently had the good fortune to attended a talk by Simon Peyton Jones titled “Immutability changes everything: 40 years of functional programming” which chronologic Simon’s life and research career. Simon is a self-described one trick pony, where that trick is functional programming. However, this trick has taken him from being a major instigator in Haskell - he remains a lead developer of the Glasgow Haskell Compiler to this day - to Microsoft research, and more recently to Epic Games working on a new programming language dubbed ‘ <a href="https://discourse.haskell.org/t/an-epic-future-for-spj/3573" target="_blank">Verse</a> ’. In this talk Simon described how he first got interested in Computer Science through a problem posed to him: the game Nim. <a href="#fn1" target="_blank">1</a> The game Picture the scene: you and...A DSL for decentralised identity in OCaml2022-08-01T01:00:00Z2022-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/dsl-for-decentralised-idA DSL for decentralised identity in OCaml This is an idea proposed in 2022 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://www.linkedin.com/in/michal-mgeladze-arciuch" target="_blank">Michał Mgeładze-Arciuch</a> . It was co-supervised with <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> . There are currently multiple identity providers without direct incentives to cooperate. This leads to many redundant implementations of the identity handling logic, many of which are not immediately compatible with each other, leading to additional increases in friction when eventual agreement needs to be reached to perform user actions. Furthermore, from the perspective of the user of the identity service, they need to keep track of identity documents from multiple sources, which leads to more security attack surface. Solving the problem of partial identity proofs allows for many possible...Trusted Carbon Credits2022-05-06T01:00:00Z2022-05-06T01:00:00ZAnilMhttps://anil.recoil.org/news/4c-1With the recent controversies over low-integrity carbon credits, I spoke to Vox magazine about my skepticism about Adam Neumann's new startup. "The problem with the current markets is nothing to do with how we can trade these more effectively," 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. "We just do not have enough supply." -- <a href="https://www.vox.com/recode/23142106/adam-neumann-crypto-carbon-credit-offset-flowcarbon" target="_blank">Vox</a> The Cambridge Centre for Carbon Credits is an initiative I started with <a href="https://www.zoo.cam.ac.uk/directory/andrew-balmford" target="_blank">Andrew Balmford</a> , <a href="https://coomeslab.org" target="_blank">David A Coomes</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and <a href="https://www.conservation.cam.ac.uk/directory/dr-tom-swinfield" target="_blank">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...Secure Programming with Dispersed Compartments2022-05-01T01:00:00Z2022-05-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/dispersed-compartmentsSecure Programming with Dispersed Compartments This is an idea proposed in 2022 as a Cambridge Computer Science PhD topic, and has been completed by <a href="https://zatkh.github.io/" target="_blank">Zahra Tarkhani</a> . This PhD project proposes novel approaches and mechanisms for application compartmentalization and isolation to reduce their ever-growing attack surfaces. Our approach is motivated by the key observation that while hardware vendors compete to provide security features (notably memory safety and privilege separation) existing systems software like commodity OSs fail to utilize such features to improve application security and privacy properly. We propose a novel principled approach to privilege separation and isolation, enabling application security to be designed and enforced within and across different isolation boundaries, and...OCaml Multicore Monthly: heading towards OCaml 5.02022-04-19T01:00:00Z2022-04-19T01:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-mar22We're getting closer to a stable release of OCaml 5.0, including reenabling support for the BSDs and introducing ARM64 multicore support.Virtual and Augmented Reality2022-04-18T01:00:00Z2022-04-18T01:00:00ZRyanGhttps://ryan.freumh.org/vr-ar.htmlPublished Mon 18 Apr 2022. Last update Tue 19 Apr 2022. I’ve been interested in virtual reality (VR) and augmented reality (AR) recently as the use case for the system(s) I’m working on in my MPhil project. This blog post will cover my development experience in porting my <a href="../cubes/" target="_blank">cubes</a> game to both VR and AR, and give a small demo for the latter. Microsoft Windows was used for ease of development with <a href="https://unity.com/" target="_blank">Unity</a> and as it’s a hard requirement for the AR headset made by Microsoft. VR The <a href="https://www.oculus.com/quest-2/" target="_blank">Oculus Quest 2</a> from Meta (formally Facebook) is a VR headset running an Android derivative. This means you can do cool stuff like run <a href="https://www.reddit.com/r/cyberDeck/comments/fc5sfr/oculus_quest_termux_selfcontained_hmd_cyberdeck/" target="_blank">Termux</a> on it (an Android terminal emulator and unvirtualised Linux environment). It’s nowhere near as flexible as something like what <a href="https://simulavr.com/" target="_blank">SimulaVR</a> are doing, which features a...OCaml Multicore Monthly: post merge activites2022-02-09T00:00:00Z2022-02-09T00:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-jan22After 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.DNS LOC2022-01-18T00:00:00Z2022-01-18T00:00:00ZRyanGhttps://ryan.freumh.org/dns-loc-rr.htmlPublished Tue 18 Jan 2022. Last update Sat 21 May 2022. The Domain Name System (DNS) has a little known ‘LOC’ resouce record (RR) defined in 1996 for encoding location information purportedly for hosts, networks, and subnets[0]. It encodes: Latitude Longitude Altitude Size of the referenced sphere Horizontal and vertical precision A number of suggested uses are proposed in the RFC: USENET - a distributed discussion system now ecplised by the World Wide Web - geographic flow maps. A ‘visual traceroute’ application showing geographical flow of IP packet, presumably relying on router responding to both IP TTL timeouts and DNS LOC requests. Network management based using LOC RRs to map hosts and routers. RFC-1876 also describes algorithms for resolving locations for domain names or IP...Book Review: The Future of Fusion Energy2022-01-03T00:00:00Z2022-01-03T00:00:00ZMartinKhttp://martin.kleppmann.com/2022/01/03/future-of-fusion-energy.htmlI give a five-star ⭐️⭐️⭐️⭐️⭐️ rating to the following book: Jason Parisi and Justin Ball. The Future of Fusion Energy . World Scientific, 2019. ISBN 978-1-78634-749-7. Available from <a href="https://amzn.to/3sUypW6" target="_blank">Amazon US</a> , <a href="https://amzn.to/3eHCpkB" target="_blank">Amazon UK</a> , and many other retailers. I came to this book looking for answers to questions such as: Is there still hope that a fusion power plant will ever be viable? If so, what exactly are the main obstacles on the way there? Why has progress in this field been so slow? And what should I make of the various startups claiming to have a fusion power plant just round the corner? The book provides an excellent, detailed answer to these questions, and more. It’s the best kind of popular science book: you don’t need a physics degree to read it, but it doesn’t fob you off with oversimplified...Using effect handlers for efficient parallel scheduling2022-01-01T00:00:00Z2022-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/parallel-scheduling-with-effectsUsing effect handlers for efficient parallel scheduling This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://github.com/bartoszmodelski" target="_blank">Bartosz Modelski</a> . Modern hardware is so parallel and workloads are so concurrent, that there is no single, perfect scheduling strategy across a complex application software stack. Therefore, there are significant performance advantages to be gained from customizing and composing schedulers. Multicore parallelism is here to stay, and in contrast with clock frequency increases, schedulers have to be carefully crafted in order to take full advantage of horizontal scaling of the underlying architecture. That’s because designs need to evolve as synchronization primitives such as locks or atomics do not scale endlessly to many...Spatial Name System2022-01-01T00:00:00Z2022-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/snsSpatial Name System This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://ryan.freumh.org" target="_blank">Ryan Gibb</a> . It was co-supervised with <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . The development of emerging classes of hardware such as Internet of Thing devices and Augmented Reality headsets has outpaced the development of Internet infrastructure. We identify problems with latency, security and privacy in the global hierarchical distributed Domain Name System. To remedy this, we propose the Spatial Name System, an alternative network architecture that relies on the innate physicality of this paradigm. Utilizing a device’s pre-existing unique identifier, its location, allows us to identify devices locally based on their physical presence. A naming system tailored to the physical...Scalable agent-based models for optimized policy design2022-01-01T00:00:00Z2022-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/differentiable-abmScalable agent-based models for optimized policy design This is an idea proposed in 2022 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Sharan Agrawal</a> . It was co-supervised with <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> . 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" target="_blank">review of the economics of biodiversity</a> , it builds on the <a href="https://www.sciencedirect.com/science/article/pii/S0921800917314623" target="_blank">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. The project also investigates how to scale such ABMs to be applicable for global policy design and scale to planetary-sized...Planetary Computing2022-01-01T00:00:00Z2022-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/plancompPlanetary Computing Planetary computing is our research into the systems required to handle the ingestion, transformation, analysis and publication of global data products for furthering environmental science and enabling better informed policy-making. We apply computer science to problem domains such as forest carbon and biodiversity preservation, and design solutions that can scalably processing geospatial data that build trust in the results via traceability and reproducibility. Key problems include how to handle continuously changing datasets that are often collected across decades and require careful access and version control. "Planetary computing" originated as a term back in 2020 when a merry band of us from Computer Science ( <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and me, later joined by <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> ,...Enhancing the Security & Privacy of Wearable Brain-Computer Interfaces2022-01-01T00:00:00Z2022-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2022-enhancing-brain-security-1Preprint on security vulnerabilities in brain-computer interfaces <a href="https://zatkh.github.io/" target="_blank">Zahra Tarkhani</a> , <a href="https://lorenaqendro.github.io" target="_blank">Lorena Qendro</a> , Malachy O'Connor Brown , Oscar Hill , <a href="https://www.cl.cam.ac.uk/~cm542/" target="_blank">Cecilia Mascolo</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="http://arxiv.org/abs/2201.07711" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/2201.07711" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2201.07711" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2022-enhancing-brain-security.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2022-enhancing-brain-security.pdf" target="_blank">PDF</a>Decentralised Capability-based Code Collaboration using Matrix2022-01-01T00:00:00Z2022-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/version-control-matrixDecentralised Capability-based Code Collaboration using Matrix This is an idea proposed in 2022 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://bsky.app/profile/wedg.dev" target="_blank">Samuel Wedgwood</a> . In 2005, due to licensing disputes, the team behind Linux parted ways with their proprietary source management tool BitKeeper, and needed a new solution. This prompted the development of Git, an open-source decentralised version control system (DVCS), which was soon used to manage the source code of Linux. Contributions were submitted as patch files, which contained just the differences that the contribution made, to an email list, which were reviewed and applied to the central Git repository for Linux. Git grew in popularity and other projects started using it to manage their source code. Then, in 2008, the...OCaml Multicore Monthly: code review complete with Inria2021-12-21T00:00:00Z2021-12-21T00:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-dec21We'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.2021 SDG Hackathon2021-11-06T00:00:00Z2021-11-06T00:00:00ZAndrésZGhttps://ancazugo.github.io/r/tidytuesday/sdg-hackathonI participated in the 2021 <a href="https://www.sdghackathon.io/" target="_blank">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" target="_blank">GitHub repo</a> .Launching the Cambridge Centre for Carbon Credits2021-11-04T00:00:00Z2021-11-04T00:00:00ZAnilMhttps://anil.recoil.org/notes/4c-launchI launched <a href="https://anil.recoil.org/projects/4c" target="_blank">4C</a> recently, and Pembroke College covers the launch with an interview with me. 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. The solution to the crisis is two-pronged: we must engage...What is an Operating System?2021-11-03T00:00:00Z2021-11-03T00:00:00ZAnilMhttps://anil.recoil.org/notes/signals-and-threadsI am the latest person to feature on the first season of the <a href="https://signalsandthreads.com/what-is-an-operating-system/" target="_blank">Signals and
Threads</a> podcast hosted by <a href="https://github.com/yminsky" target="_blank">Yaron Minsky</a> (you may recognise him as my co-author on <a href="https://anil.recoil.org/papers/rwo" target="_blank">Real World OCaml</a> ). 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. -- <a href="https://signalsandthreads.com/what-is-an-operating-system/" target="_blank">Signals and Threads</a> I think I might be the first non- Jane Street person to be on their podcast! Quite the honour.Hosting HotCRP2021-10-17T01:00:00Z2021-10-17T01:00:00ZRichardMhttps://mort.io/blog/setup-hotcrp/I once had cause to setup <a href="https://read.seas.harvard.edu/~kohler/hotcrp/" target="_blank">HotCRP</a> for local hosting. Specifically on a local Lab-hosted VM image. Some of what follows is specific to the CUCL VM hosting service, but I think most of it is HotCRP generic and so may be of use. Anyway, here’s the crib sheet, starting from <a href="https://mbtech.github.io/Setting-up-hotcrp/" target="_blank">https://mbtech.github.io/Setting-up-hotcrp/</a> … # setup some variables YOUR-DOMAIN = " hotcrp-test.cl.cam.ac.uk " YOUR-WORKSHOP = " sysws18 " YOUR-PASSWORD = " mybestpassword " YOUR-EMAIL = " postmaster@example.com " <a href="https://mort.io/blog/setup-hotcrp/#lab-specifics" target="_blank">Lab specifics</a> Assume we start from a default Ubuntu template VM, and then… Configure the VM cl-asuser passwd # set UNIX password for sudo # create some space for d in /usr/src/ * ; do export K = $ ( uname - r | sed ' s/-generic$// ' ) echo - n $ K $ d ... case $ d in " /usr/src/linux-headers- $ K " | " /usr/src/linux-headers- $ { K } -generic "...ILNP Interface2021-10-16T01:00:00Z2021-10-16T01:00:00ZRyanGhttps://ryan.freumh.org/ilnp-interface.htmlPublished Sat 16 Oct 2021. Last update Sat 22 Oct 2022. Tags: <a href="/projects.html" target="_blank">projects</a> . My <a href="./network-layer-mobility.html" target="_blank">dissertation</a> involved implementing an <a href="./network-layer-mobility.html#ilnp" target="_blank">Identifier-Locator Network
Protocol</a> (ILNP) <a href="./network-layer-mobility.html#overlay-network" target="_blank">overlay network</a> in Python which can be found at <a href="https://github.com/RyanGibb/ilnp-overlay-network" target="_blank">github.com/RyanGibb/ilnp-overlay-network</a> . As part of this, I wanted to add an application layer interface to the overlay to support existing applications. (To those who still want to know why I posit, why not?) That is, applications other than those written in python specifically for the overlay. This would also allow multiple applications to run over one overlay network stack. However, this wasn’t a priority for my dissertation as it wasn’t necessary to obtain experimental results. Since graduating I’ve found a few weekends to work on this and a solution will be explored in this blog post. Datagrams First up, how can we send a datagram over...OCaml Multicore Monthly: effect handling confirmed for 5.02021-10-01T01:00:00Z2021-10-01T01:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-sep21We'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.Forest preservation and restoration2021-09-25T01:00:00Z2021-09-25T01:00:00ZAnilMhttps://anil.recoil.org/notes/forestsI track external notes and media articles here on forest preservation and restoration as part of my work on <a href="https://anil.recoil.org/projects/4c" target="_blank">Trusted Carbon Credits</a> . Not complete, just a reading list. <a href="https://www.youtube.com/watch?v=yiw6_JakZFc" target="_blank">Can YOU Fix Climate Change?</a> (great short summary of the overall issues) Rewilding <a href="https://www.theguardian.com/environment/2021/sep/24/vast-area-of-scottish-highlands-to-be-rewilded-in-ambitious-30-year-project-aoe" target="_blank">Affric Highlands initiative</a> to rewild Scotland over 30 years <a href="https://www.bloomberg.com/news/articles/2021-09-14/gabon-s-climate-law-brings-it-closer-to-carbon-trade-ambition" target="_blank">Gabon's Climate Law</a> <a href="https://www.soilassociation.org/blogs/2021/august/3/pairing-agroforestry-with-livestock-the-major-benefits/" target="_blank">Pairing agroforestry with livestock: the major benefits</a> <a href="https://www.nationalparks.uk/2021/10/06/press-release-major-global-companies-to-fund-vital-nature-restoration-projects-in-the-uks-national-parks-through-innovative-new-financing-facility/" target="_blank">Major global companies to fund nature restoration projects in UK's national parks</a> (via <a href="https://www.thepalladiumgroup.com" target="_blank">Palladium group</a> ) Remote sensing <a href="https://www.kiss.caltech.edu/papers/biodiversity/papers/2020_Book_RemoteSensingOfPlantBiodiversi.pdf" target="_blank">Remote sensing of plant biodiversity</a> <a href="https://geobon.org" target="_blank">Geobon</a> - global researcher network working on above. <a href="https://earthi.space/" target="_blank">Earth-i</a> - sub-1m sensing satellite constellation <a href="https://www.mantle-labs.com" target="_blank">Mantle Labs</a> - earth observation + machine learning for farmers <a href="https://www.cgi.com/uk/en-gb/news/climate/cgi-announces-strategic-partnership-project-seagrass-reduce-co2" target="_blank">Seagrass from space</a> Keshav's <a href="http://blizzard.cs.uwaterloo.ca/iss4e/wp-content/uploads/2017/10/Communication-technologies-for-energy-informatics.pdf" target="_blank">comms technologies for energy informatics</a> Carbon Credits <a href="https://www.cis.upenn.edu/~bcpierce/papers/carbon-offsets.pdf" target="_blank">Notes on Carbon offsets for scientific societies</a> <a href="https://vcmintegrity.org/" target="_blank">Voluntary Carbon Markets integrity initiative</a> <a href="https://www.ecosystemmarketplace.com/articles/press-release-voluntary-carbon-markets-rocket-in-2021-on-track-to-break-1b-for-first-time/" target="_blank">Voluntary Carbon Markets Rocket in 2021, On Track to Break $1B for First Time</a> Biodiversity <a href="https://kiss.caltech.edu/lectures/2019_biodiversity.html" target="_blank">Biodiversity: Perspectives of a Techie</a> - Dave Thau - Data and Technology Global Lead Scientist, WWF Valuing climate change <a href="https://www.sciencedirect.com/science/article/pii/S001671851930051X" target="_blank">Cryptocarbon: The promises and pitfalls of forest protection on a blockchain</a> <a href="https://www.nature.com/articles/s41558-018-0285-8" target="_blank">Valuing climate damages at the country level</a> - nature climate change, 2018 <a href="https://www.nature.com/articles/s41558-018-0282-y" target="_blank">Country-level social cost of carbon</a> , nature climate change...Decentralised tech on Recoil2021-09-19T01:00:00Z2021-09-19T01:00:00ZAnilMhttps://anil.recoil.org/notes/decentralised-stack<a href="https://nick.recoil.org" target="_blank">Nick Ludlam</a> and I have self-hosted recoil.org since around 1996, typically for email and web. These days, there are a number of interesting software stacks around decentralised communication that we deploy. This note keeps track of them. Email (active) Currently Postfix and DKIM/SPIF relays Till 2019, was OpenSMTPD and would like to return to it but waiting on filter support. Till around 2016, was qmail but finally gave up due to difficulty of spam filtering. Next step will be to try out the MirageOS email stack that dinosaure has been leading the development of. Web (active) This website is an OCaml webserver running a custom multicore OCaml <a href="https://github.com/avsm/eeww" target="_blank">webserver</a> Next step will be to go solar powered with a custom DNS server. DNS (inactive) MirageOS DNS server. Currently offline due to a hosting...Several podcast interviews2021-09-01T01:00:00Z2021-09-01T01:00:00ZMartinKhttp://martin.kleppmann.com/2021/09/01/podcast-interviews.htmlI regularly get asked to give interviews on the topics that I work on, especially for podcasts. To make them easier to find for anybody who’s interested, I thought I would make a list. They touch on a range of different topics, although there is also some overlap so I wouldn’t recommend listening to them all in a row! (By the way, if you want a list of conference talks I have given, I have a <a href="https://www.youtube.com/playlist?list=PLeKd45zvjcDHJxge6VtYUAbYnvd_VNQCx" target="_blank">YouTube playlist</a> for that.) Here’s a list of interviews I’ve given as of September 2021: Interview with <a href="https://www.wix.engineering/" target="_blank">Wix Engineering</a> , in which we discuss my book, the state of Automerge, the convergence of streaming systems and databases, Kafka’s move to replace ZooKeeper with their own Raft implementation, impact of my research, and more. Recorded 16 June 2021, published 26 August 2021. <a href="https://www.youtube.com/watch?v=jtK7LOcP76s" target="_blank">Video</a> , <a href="https://www.wix.engineering/post/wix-engineering-tech-interviews-martin-kleppmann-natan-silnitsky" target="_blank">transcript</a> . Interview...Roadmap for OCaml's online presence2021-08-27T01:00:00Z2021-08-27T01:00:00ZAnilMhttps://anil.recoil.org/notes/roadmap-ocamlorg-v3After a decade of good service, it's time to overhaul OCaml's online presence to more modern technologies. This post lays out the roadmap for the third edition of the OCaml.org website.Tarballing some files2021-08-25T01:00:00Z2021-08-25T01:00:00ZRichardMhttps://mort.io/blog/tar-includes/I recently discovered, to some irritation, that the --include PATTERN option to tar seems only to apply to directories – and if the PATTERN doesn’t match, it won’t traverse subdirectories. But I wanted to include *.php for some reason. So instead pipe the output of find , or better these days, <a href="https://github.com/sharkdp/fd" target="_blank">fd</a> : fd - e php - 0 | tar - cvjf TARBALL.bz2 -- null -- files-from -How Computer Science Can Aid Forest Restoration2021-08-01T01:00:00Z2021-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2021-arxiv-forestrycs-1Preprint about our working notes on how CS might contribute to forest preservation Gemma Gordon , <a href="https://ameliaholcomb.github.io" target="_blank">Amelia Holcomb</a> , <a href="https://github.com/ctk21" target="_blank">Tom Kelly</a> , <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> , <a href="https://github.com/jonludlam" target="_blank">Jon Ludlam</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Working paper at <a href="http://arxiv.org/abs/2109.07898" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/2109.07898" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.2109.07898" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2021-arxiv-forestrycs.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2021-arxiv-forestrycs.pdf" target="_blank">PDF</a>Experiences with Effects2021-08-01T01:00:00Z2021-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2021-oud-effects-1Paper on programming with effects in OCaml <a href="https://github.com/https://roscidus.com" target="_blank">Thomas Leonard</a> , <a href="https://craigfe.io" target="_blank">Craig Ferguson</a> , <a href="https://patrick.sirref.org" target="_blank">Patrick Ferris</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://github.com/ctk21" target="_blank">Tom Kelly</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://icfp21.sigplan.org/details/ocaml-2021-papers/16/Experiences-with-Effects" target="_blank">proceedings of the 2021 OCaml Users and Developers Workshop</a> . <a href="https://icfp21.sigplan.org/details/ocaml-2021-papers/16/Experiences-with-Effects" target="_blank">URL</a> (icfp21.sigplan.org) <a href="https://anil.recoil.org/papers/2021-oud-effects.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2021-oud-effects.pdf" target="_blank">PDF</a>Cubes2021-06-03T01:00:00Z2021-06-03T01:00:00ZRyanGhttps://ryan.freumh.org/cubes.htmlPublished Thu 3 Jun 2021. Last update Thu 3 Mar 2022. Tags: <a href="/projects.html" target="_blank">projects</a> . I was teaching myself Unity the week after the last exam for my undergrad and ended up creating this. It’s an infinite runner with cubes created in unity. Play it <a href="resources/cubes/" target="_blank">here</a> . The repo can be found at <a href="https://github.com/RyanGibb/cubes" target="_blank">github.com/RyanGibb/cubes</a> . Re-rooting To allow the game to be infinite, whilst also avoiding floating point errors, the game world is periodically ‘re-rooted’. This involves moving the player and all objects back a certain distance in one frame. Objects behind the player can be safely removed. However, it may prove challenging to get to a distance where floating point errors occur! World Generation The world is generated using a Markov Chain containing transitions from segments to segments. Segments may be prefabricated or...Retrofitting effect handlers onto OCaml2021-06-01T01:00:00Z2021-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2021-pldi-retroeff-1Paper on retrofitting effects in OCaml presented in PLDI 2024 <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , <a href="https://github.com/stedolan" target="_blank">Stephen Dolan</a> , <a href="https://github.com/lpw25" target="_blank">Leo White</a> , <a href="https://github.com/ctk21" target="_blank">Tom Kelly</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/3453483.3454039" target="_blank">proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation</a> . <a href="https://dl.acm.org/doi/10.1145/3453483.3454039" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3453483.3454039" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2021-pldi-retroeff.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2021-pldi-retroeff.pdf" target="_blank">PDF</a>Network layer mobility2021-05-10T01:00:00Z2021-05-10T01:00:00ZRyanGhttps://ryan.freumh.org/network-layer-mobility.htmlPublished Mon 10 May 2021. Last update Mon 24 Mar 2025. Tags: <a href="/projects.html" target="_blank">projects</a> , <a href="/research.html" target="_blank">research</a> . My undergraduate dissertation, “Ubiquitous Communication for the Internet of Things: An Identifier-Locator addressing split overlay network”, explored how we can modify the Internet Protocol to better support resource-constrained highly mobile embedded devices. A copy can be found <a href="papers/2021-bsc-ubicomm.pdf" target="_blank">here</a> (or <a href="https://studres.cs.st-andrews.ac.uk/Library/ProjectLibrary/cs4099/2021/rtg2-Final_Report.pdf" target="_blank">here</a> for St Andrews folk), and the associated implementation can be found at <a href="https://github.com/RyanGibb/ilnp-overlay-network" target="_blank">ilnp-overlay-network</a> . Network stack First, some prerequisite networking knowledge. A network protocol stack is a view of how protocols are organised into layers. The <a href="https://en.wikipedia.org/wiki/OSI_model" target="_blank">OSI model</a> describes named layers; including the physical, link, network, transport, and application layers. Note the OSI model and TCP/IP have <a href="https://en.wikipedia.org/wiki/Internet_protocol_suite#Layer_names_and_number_of_layers_in_the_literature" target="_blank">differing
semantics</a> , but this is...25 years of OCaml!2021-05-09T01:00:00Z2021-05-09T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2021/05/09/ocaml-at-25On this day in 1996, Xavier Leroy <a href="https://sympa.inria.fr/sympa/arc/caml-list/1996-05/msg00003.html" target="_blank">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" target="_blank">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. For whatever reason, the 1.00 tag deletes the boot images, but they can be taken from the <a href="https://github.com/dra27/ocaml/tree/2de35753f7b43b11098f7d25a09b8cb904c1a2ca/boot" target="_blank">commit before</a> . I could get the runtime to build quite easily on Ubuntu, but alas while it appeared to be able to run boot/ocamllex , boot/ocamlc 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! According to the docs, the Windows compiler used to be...It's time to say goodbye to the GPL2021-04-14T01:00:00Z2021-04-14T01:00:00ZMartinKhttp://martin.kleppmann.com/2021/04/14/goodbye-gpl.htmlThe trigger for this post is the <a href="https://www.fsf.org/news/statement-of-fsf-board-on-election-of-richard-stallman" target="_blank">reinstating</a> of Richard Stallman, a very <a href="https://rms-open-letter.github.io/" target="_blank">problematic character</a> , to the board of the <a href="https://www.fsf.org/" target="_blank">Free Software Foundation</a> (FSF). I am appalled by this move, and join others in the call for his removal. This occasion has caused me to reevaluate the position of the FSF in computing. It is the steward of the GNU project (a part of Linux distributions, <a href="https://www.gnu.org/gnu/incorrect-quotation.en.html" target="_blank">loosely speaking</a> ), and of a family of software licenses centred around the <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">GNU General Public License</a> (GPL). These efforts are unfortunately tainted by Stallman’s behaviour. However, this is not what I actually want to talk about today. In this post I argue that we should move away from the GPL and related licenses (LGPL, AGPL), for reasons that have nothing to do with Stallman, but simply because I think they have failed to achieve their purpose, and they are more...Building the future of computing, with your help2021-02-23T00:00:00Z2021-02-23T00:00:00ZMartinKhttp://martin.kleppmann.com/2021/02/23/patreon.htmlFor the last five or six years, since I bid goodbye to the startup scene and Silicon Valley, I have been increasingly working in public. I have <a href="https://dataintensive.net/" target="_blank">written a book</a> , given <a href="https://martin.kleppmann.com/talks.html" target="_blank">around 100 talks</a> (many of which are <a href="https://www.youtube.com/playlist?list=PLeKd45zvjcDHJxge6VtYUAbYnvd_VNQCx" target="_blank">available on YouTube</a> ), published <a href="https://martin.kleppmann.com/#publications" target="_blank">over 20 research papers</a> (all freely available from my website), and released and maintained <a href="https://github.com/ept" target="_blank">some open source projects</a> . Just a few months ago I released a new undergraduate-level course on distributed systems, consisting of <a href="https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB" target="_blank">7 hours of video lectures</a> and <a href="https://www.cl.cam.ac.uk/teaching/2021/ConcDisSys/dist-sys-notes.pdf" target="_blank">87 pages of notes</a> and exercises, all free; in student evaluation at the <a href="https://www.cst.cam.ac.uk/" target="_blank">University of Cambridge</a> , over 80% rated my lectures and notes as “excellent”. I love doing first-rate work and making it broadly available. In fact, apart from my book, I give everything away for free, because I want to be able to reach and help the broadest possible set of people. And even my book is very cheap...Decentralised content moderation2021-01-13T00:00:00Z2021-01-13T00:00:00ZMartinKhttp://martin.kleppmann.com/2021/01/13/decentralised-content-moderation.htmlWho is doing interesting work on decentralised content moderation? With Donald Trump suspended from Twitter and Facebook, and <a href="https://en.wikipedia.org/wiki/Parler" target="_blank">Parler</a> kicked off AWS, there is renewed discussion about what sort of speech is acceptable online, and how it should be enforced. Let me say up front that I believe that these bans were justified. However, they do raise questions that need to be discussed, especially within the technology community. As many have already pointed out, Twitter, Facebook and Amazon are corporations that are free to enforce their terms of service in whatever way they see fit, within the bounds of applicable law (e.g. anti-discrimination legislation). However, we should also realise that almost all social media, the public spaces of the digital realm, are in fact privately owned...Void Processes: Minimising privilege by default2021-01-01T00:00:00Z2021-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/void-processesVoid Processes: Minimising privilege by default This is an idea proposed in 2021 as a Cambridge Computer Science Part III or MPhil project, and has been completed by <a href="https://blog.hillion.co.uk" target="_blank">Jake Hillion</a> . Void processes intend to make it easier for all developers to produce effectively privilege separated applications. The project has two primary goals: show the merits of starting from zero privilege, and provide the utilities to make this feasible for the average developer. Building void processes involves first reliably removing all privilege from a process then systematically adding back in what is required, and no more. This project utilises Linux namespaces to revoke privilege from an application, showing how this can be done and why its easier in some domains than others. It then shows how to inject...Security analysis of brain-computing interfaces2021-01-01T00:00:00Z2021-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/brain-interface-securitySecurity analysis of brain-computing interfaces This is an idea proposed in 2021 as a good starter project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Malachy O'Connor Brown</a> and <a href="https://anil.recoil.org/" target="_blank">Oscar Hill</a> . It was co-supervised with <a href="https://zatkh.github.io/" target="_blank">Zahra Tarkhani</a> and <a href="https://lorenaqendro.github.io" target="_blank">Lorena Qendro</a> . Brain Computing Interface (BCI) technologies, both invasive and non-invasive, are increasingly used in a wide range of applications, from health-care to smart communication and control. Most BCI applications are safety-critical or privacy-sensitive. However, the infinite potentials of BCI and its ever-growing market size have been distracted the BCI community from significant security and privacy threats. In this research, we first investigate the security and privacy threats of various BCI devices and applications, from machine learning adversarial threats to untrusted...Exploring Concurrency in Agent-Based Modelling with Multicore OCaml2021-01-01T00:00:00Z2021-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/ocaml-forest-simExploring Concurrency in Agent-Based Modelling with Multicore OCaml This is an idea proposed in 2021 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Martynas Sinkievič</a> . Computational modelling techniques such as ABMs are used to understand the dynamics of ecosystems and predict their behaviour in response to climate change and ecological disturbances, while also searching for optimal paths towards solutions to these problems. Terrestrial biosphere models are one such model which simulate the vegetation and soil life cycle. There have been two approaches taken with such modelling: The top-down approach take coarse-grained dynamic models that simulate environments in large chunks and scale to large areas as needed, but with a lack of accuracy in the simulated environment...Using Bloom filters to efficiently synchronise hash graphs2020-12-02T00:00:00Z2020-12-02T00:00:00ZMartinKhttp://martin.kleppmann.com/2020/12/02/bloom-filter-hash-graph-sync.htmlThis blog post uses <a href="https://www.mathjax.org/" target="_blank">MathJax</a> to render mathematics. You need JavaScript enabled for MathJax to work. In some recent research, <a href="http://heidihoward.co.uk/" target="_blank">Heidi</a> and I needed to solve the following problem. Say you want to sync a hash graph, such as a Git repository, between two nodes. In Git, each commit is identified by its hash, and a commit may include the hashes of predecessor commits (a commit may include more than one hash if it’s a merge commit). We want to figure out the minimal set of commits that the two nodes need to send to each other in order to make their graphs the same. You might wonder: isn’t this a solved problem? Git has to do this every time you do git pull or git push ! You’re right, and some cases are easy, but other cases are a bit trickier. What’s more, the algorithm used by Git is not...New courses on distributed systems and elliptic curve cryptography2020-11-18T00:00:00Z2020-11-18T00:00:00ZMartinKhttp://martin.kleppmann.com/2020/11/18/distributed-systems-and-elliptic-curves.htmlI have just published new educational materials that might be of interest to computing people: a new 8-lecture course on distributed systems, and a tutorial on elliptic curve cryptography. Distributed Systems Since last year I have been delivering an 8-lecture undergraduate course on distributed systems at the University of Cambridge. The first time I delivered it, I inherited the slides and exercises from the people who lectured it in previous years (Richard Mortier, Anil Madhavapeddy, Robert Watson, Jean Bacon, and Steven Hand), and I just used those materials with minor modifications. It was a good course, but it was getting quite dated (e.g. lots of material on <a href="https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture" target="_blank">CORBA</a> , which is now of mostly historical interest). Therefore, this year I decided to do a thorough refresh of the...Banyan: Coordination-Free Distributed Transactions over Mergeable Types2020-11-01T00:00:00Z2020-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2020-asplas-banyan-1Paper on Banyan for coordination-free distributed transactions in ASPLAS 2020 Shashank Shekhar Dubey , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://link.springer.com/10.1007/978-3-030-64437-6_12" target="_blank">proceedings of the Asian Symposium on Programming Languages and Systems</a> . <a href="https://link.springer.com/10.1007/978-3-030-64437-6_12" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/978-3-030-64437-6_12" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2020-asplas-banyan.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2020-asplas-banyan.pdf" target="_blank">PDF</a>Using memtrace on Windows2020-10-08T01:00:00Z2020-10-08T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2020/10/08/windows-memtraceIt 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" target="_blank">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" target="_blank">memtrace</a> and <a href="https://github.com/janestreet/memtrace_viewer" target="_blank">Memtrace viewer</a> and earlier this week <a href="https://blog.janestreet.com/finding-memory-leaks-with-memtrace/" target="_blank">blogged about its use</a> . I thought I’d quickly share the experience of using it on native Windows. 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,...Data visualisation links2020-09-07T01:00:00Z2020-09-07T01:00:00ZRichardMhttps://mort.io/blog/dataviz/Some possibly useful data visualisation links: <a href="https://medium.economist.com/why-you-sometimes-need-to-break-the-rules-in-data-viz-4d8ece284919" target="_blank">https://medium.economist.com/why-you-sometimes-need-to-break-the-rules-in-data-viz-4d8ece284919</a> <a href="https://colororacle.org/" target="_blank">https://colororacle.org/</a>The OCaml Platform: 20202020-09-01T01:00:00Z2020-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2020-oud-platform-1Annual update on the OCaml Platform at the OCaml Workshop <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://icfp20.sigplan.org/home/ocaml-2020" target="_blank">the 10th ACM OCaml Users and Developers Workshop</a> . <a href="https://icfp20.sigplan.org/home/ocaml-2020" target="_blank">URL</a> (icfp20.sigplan.org) <a href="https://anil.recoil.org/papers/2020-oud-platform.bib" target="_blank">BIB</a>State of the OCaml Platform 20202020-08-28T01:00:00Z2020-08-28T01:00:00ZAnilMhttps://anil.recoil.org/news/b11188ba-0f97-4ec4-b372-fa3cea0821ab-1Talk on the state of the OCaml Platform in 2020Renovating an old media PC2020-08-28T01:00:00Z2020-08-28T01:00:00ZRichardMhttps://mort.io/blog/mediapc/Some notes from my first attempt to renovate an old media PC that had a SYSLINUX install without any package management, and a crufty BIOS. Probably outdated now, but I may go back to it one day… First, some background links: <a href="https://en.wikipedia.org/wiki/Cylinder-head-sector" target="_blank">https://en.wikipedia.org/wiki/Cylinder-head-sector</a> <a href="https://en.wikipedia.org/wiki/FAT_boot_sector" target="_blank">https://en.wikipedia.org/wiki/FAT_boot_sector</a> <a href="https://en.wikipedia.org/wiki/Logical_Block_Addressing#CHS_conversion" target="_blank">https://en.wikipedia.org/wiki/Logical_Block_Addressing#CHS_conversion</a> <a href="https://en.wikipedia.org/wiki/Master_Boot_Record" target="_blank">https://en.wikipedia.org/wiki/Master_Boot_Record</a> <a href="https://en.wikipedia.org/wiki/Volume_boot_record" target="_blank">https://en.wikipedia.org/wiki/Volume_boot_record</a> <a href="https://wiki.archlinux.org/index.php/Syslinux" target="_blank">https://wiki.archlinux.org/index.php/Syslinux</a> <a href="https://wiki.syslinux.org/wiki/index.php?title=Common_Problems#Failed_to_load_ldlinux" target="_blank">https://wiki.syslinux.org/wiki/index.php?title=Common_Problems#Failed_to_load_ldlinux</a> <a href="https://wiki.syslinux.org/wiki/index.php?title=Hardware_Compatibility#USB_related_problems" target="_blank">https://wiki.syslinux.org/wiki/index.php?title=Hardware_Compatibility#USB_related_problems</a> <a href="https://wiki.syslinux.org/wiki/index.php?title=Hdt_(Hardware_Detection_Tool)" target="_blank">https://wiki.syslinux.org/wiki/index.php?title=Hdt_(Hardware_Detection_Tool)</a> I explored two ways forward: <a href="https://www.syslinux.org/" target="_blank">SYSLINUX</a> and <a href="https://www.gnu.org/software/grub/index.html" target="_blank">GRUB</a> . <a href="https://mort.io/blog/mediapc/#syslinux" target="_blank">SYSLINUX</a> I found that getting SYSLINUX working required moving the partition to 0/1/1 – using sectors per track of 63 or 32, and heads per cylinder or 16 or 64 with appropriate cylinder values simply didn’t help. Diagnosed by observing that console displayed only CRLF but no banner – SYSLINUX code ends up with the banner to be displayed just falling into the second sector on the disk, so it can’t be read...OCaml Multicore Monthly: systhreads compatibility merged2020-08-20T01:00:00Z2020-08-20T01:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-sep20The big advance in the multicore OCaml branch is that we restored compatibility with the traditional OCaml systhreads. This in turn means that many existing software packages just work out of the box on the new runtime. Big news this month is that the systhreads compatibility support PR has been merged, which means that Dune (and other users of the Thread module) can compile out of the box. You can now compile the multicore OCaml fork conveniently using the new opam compiler plugin (see announcement). -- <a href="https://discuss.ocaml.org/t/multicore-ocaml-september-2020/6565" target="_blank">me, on the discussion forum</a>Retrofitting parallelism onto OCaml2020-08-01T01:00:00Z2020-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2020-icfp-retropar-1Won best paper award at ICFP 2020 for our paper on retrofitting parallelism onto OCaml! <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , <a href="https://github.com/stedolan" target="_blank">Stephen Dolan</a> , <a href="https://github.com/lpw25" target="_blank">Leo White</a> , <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://github.com/ctk21" target="_blank">Tom Kelly</a> , Anmol Sahoo , <a href="https://github.com/Sudha247" target="_blank">Sudha Parimala</a> , Atul Dhiman and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://dl.acm.org/doi/10.1145/3408995" target="_blank">Proceedings of the ACM on Programming Languages</a> (vol 4 issue ICFP). <a href="https://dl.acm.org/doi/10.1145/3408995" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3408995" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2020-icfp-retropar.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2020-icfp-retropar.pdf" target="_blank">PDF</a>Parallelising your OCaml Code with Multicore OCaml2020-08-01T01:00:00Z2020-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2020-oud-parallelising-1Paper on how to parallelise OCaml code at the OCaml Workshop <a href="https://toao.com" target="_blank">Sadiq Jaffer</a> , <a href="https://github.com/Sudha247" target="_blank">Sudha Parimala</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , <a href="https://github.com/ctk21" target="_blank">Tom Kelly</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://github.com/ocaml-multicore/multicore-talks/tree/master/ocaml2020-workshop-parallel" target="_blank">proceedings of the 2020 OCaml Users and Developers Workshop</a> . <a href="https://github.com/ocaml-multicore/multicore-talks/tree/master/ocaml2020-workshop-parallel" target="_blank">URL</a> (github.com) <a href="https://anil.recoil.org/papers/2020-oud-parallelising.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2020-oud-parallelising.pdf" target="_blank">PDF</a>OCaml-CI: A Zero-Configuration CI2020-08-01T01:00:00Z2020-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2020-oud-ci-1Presented the new OCaml DSL for continuous integration at the OCaml Workshop <a href="https://github.com/https://roscidus.com" target="_blank">Thomas Leonard</a> , <a href="https://craigfe.io" target="_blank">Craig Ferguson</a> , <a href="https://github.com/kit-ty-kate" target="_blank">Kate Deplaix</a> , <a href="http://www.skjegstad.com/about/" target="_blank">Magnus Skjegstad</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://icfp20.sigplan.org/details/ocaml-2020-papers/6/OCaml-CI-A-Zero-Configuration-CI" target="_blank">proceedings of the 2020 OCaml Users and Developers Workshop</a> . <a href="https://icfp20.sigplan.org/details/ocaml-2020-papers/6/OCaml-CI-A-Zero-Configuration-CI" target="_blank">URL</a> (icfp20.sigplan.org) <a href="https://anil.recoil.org/papers/2020-oud-ci.bib" target="_blank">BIB</a>Making GPS accurate in dense forests using sensor fusion2020-08-01T01:00:00Z2020-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/sensor-fusion-vslam-forestsMaking GPS accurate in dense forests using sensor fusion This is an idea proposed in 2020 as a good starter project, and has been completed by <a href="https://keshav123456.github.io" target="_blank">Keshav Sivakumar</a> . It was co-supervised with <a href="https://svr-sk818-web.cl.cam.ac.uk/keshav/wiki/index.php/Main_Page" target="_blank">Srinivasan Keshav</a> and <a href="https://coomeslab.org" target="_blank">David A Coomes</a> . 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. What low cost solutions exist to perform localisation under such circumstances? What are the rough accuracies of these solutions? What constraints and advantages do these solutions have (in terms of power, light, cost, etc) We observe that a lot of SLAM algorithms exist these days, but most of the recent research is on...Discord discord2020-08-01T01:00:00Z2020-08-01T01:00:00ZRichardMhttps://mort.io/blog/discord/So for some reason I wanted to do this – use Discord on an iPad without installing the app. This proved surprisingly tricky as Safari on the iPad really wanted to make you use the app and certainly wouldn’t display the desktop site. However, Firefox Focus can though it still forced you into the app from the link in the invite email. However, you can go to the website to signup and then manually invite yourself via a real desktop browser. And this then means that Firefox Focus on the iPad believes in the new account and just lets you in. Seems something of a palaver but hey, these twisted webs we weave.OCaml Multicore Monthly: preprint paper available2020-04-27T01:00:00Z2020-04-27T01:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-apr20In the April OCaml multicore monthly, we have a preprint available of our ICFP submission about the OCaml 5 multicore runtime. (Update: This paper actually won the ICFP best paper award later in the year! Read it at " <a href="https://anil.recoil.org/papers/2020-icfp-retropar" target="_blank">Retrofitting parallelism onto OCaml</a> ").The First Billion Real Deployments of Unikernels2020-02-26T00:00:00Z2020-02-26T00:00:00ZAnilMhttps://anil.recoil.org/news/c09ed36f-6ad5-4254-a0ce-3ca3398f38a3-1Part 2Rebuilding Operating Systems with Functional Principles2020-02-26T00:00:00Z2020-02-26T00:00:00ZAnilMhttps://anil.recoil.org/news/d456e4bc-bce6-45ad-9d2e-102f834ec400-1Delivered the distinguished seminar series at St Andrews on rebuilding Operating Systems with functional principlesProgramming the Next Trillion Embedded Devices2020-02-26T00:00:00Z2020-02-26T00:00:00ZAnilMhttps://anil.recoil.org/news/287364fa-b59c-4b9f-812d-d81cc0c992a5-1Part 3OCaml Multicore Monthly: starting upstream to OCaml2020-01-29T00:00:00Z2020-01-29T00:00:00ZAnilMhttps://anil.recoil.org/notes/multicore-monthly-jan20We started the process of upstreaming our <a href="https://anil.recoil.org/papers/2014-oud-multicore" target="_blank">multicore OCaml</a> branch to mainline OCaml, and so I started posting regular updates to the community forum. 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. -- <a href="https://discuss.ocaml.org/t/multicore-ocaml-january-2020-update/5090" target="_blank">me, on the discussion forum</a>Information Flow for Trusted Execution2020-01-01T00:00:00Z2020-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/difc-teeInformation Flow for Trusted Execution There is now increased hardware support for improving the security and performance of privilege separation and compartmentalization techniques such as process-based sandboxes, trusted execution environments, and intra-address space compartments. We dub these "hetero-compartment environments" and observe that existing system stacks still assume single-compartment models (i.e. user space processes), leading to limitations in using, integrating, and monitoring heterogeneous compartments from a security and performance perspective. This project explores how we might deploy techniques such as fine-grained information flow control (DIFC) to allow developers to securely use and combine compartments, define security policies over shared system resources, and...Setting up a Macbook2020-01-01T00:00:00Z2020-01-01T00:00:00ZRichardMhttps://mort.io/blog/setup-new-laptop/This is the set of things that I roughly did to set up my old new Macbook: configurations, packages, etc. Not guaranteed complete, but hopefully captures much of it. <a href="https://mort.io/blog/setup-new-laptop/#keyboard" target="_blank">Keyboard</a> Set the touchbar to expanded Turn off various emacs conflicts (e.g., S-M-6 ) Use <a href="https://karabiner-elements.pqrs.org/" target="_blank">Karabiner Elements</a> to make CAPSLOCK become ESC on a single press <a href="https://mort.io/blog/setup-new-laptop/#homebrew-packages" target="_blank">Homebrew packages</a> Install <a href="https://brew.sh/" target="_blank">Homebrew</a> and then # install packages brew install \ aspcud \ aspell \ bash-completion \ coreutils \ direnv \ emacs \ evernote \ ffmpeg \ font-hack-nerd-font \ gawk \ gcc \ get_iplayer \ ghostscript \ git \ git-lfs \ gnupg2 \ gnuplot \ gpg-agent \ graphviz \ imagemagick \ jq \ lua \ mu \ ncftp \ nmap \ ocaml \ offlineimap \ omnigraffle \ opam \ python \ python@2 \ qemu \ rcs \ readline \ rsync \ socat \ sshfs \ telnet \ tmux \ unrar \ wget # install casks brew...OpenBSD cloud hosting options2019-08-29T01:00:00Z2019-08-29T01:00:00ZAnilMhttps://anil.recoil.org/notes/openbsd-hostingI <a href="https://twitter.com/avsm/status/1167012354556669952" target="_blank">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: OpenBSDAMS Dedicated/VMs for openbsd hosting (see <a href="https://twitter.com/OpenBSDAms" target="_blank">here</a> ) Mythic Beasts I have provisioned a bare metal server there and they kindly stuck a USB stick in with an OpenBSD installer. DataCentreLite Not tried this yet but <a href="https://twitter.com/NicoSchottelius/status/1167163133024264192" target="_blank">possible followup</a> . LiquidWeb Good <a href="https://twitter.com/vphantom/status/1167020959771049984" target="_blank">recommendation</a> from StephaneThe OCaml Platform in 20192019-08-01T01:00:00Z2019-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2019-ocaml-platform-1Annual update on the OCaml Platform in 2019 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and Gemma Gordon . Paper in the <a href="https://icfp19.sigplan.org/home/ocaml-2019" target="_blank">proceedings of the OCaml Workshop 2019</a> . <a href="https://icfp19.sigplan.org/home/ocaml-2019" target="_blank">URL</a> (icfp19.sigplan.org) <a href="https://anil.recoil.org/papers/2019-ocaml-platform.bib" target="_blank">BIB</a>MirageOS 4: the dawn of practical build systems for exotic targets2019-08-01T01:00:00Z2019-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2019-mirage-build-1Paper on the MirageOS 4 build system at OCaml Workshop <a href="https://www.lortex.org" target="_blank">Lucas Pluvinage</a> , Romain Calascibetta , Rudi Grinberg and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://icfp19.sigplan.org/home/ocaml-2019#program" target="_blank">proceedings of the OCaml Workshop 2019</a> . <a href="https://icfp19.sigplan.org/home/ocaml-2019#program" target="_blank">URL</a> (icfp19.sigplan.org) <a href="https://anil.recoil.org/papers/2019-mirage-build.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2019-mirage-build.pdf" target="_blank">PDF</a>Programming Unikernels in the Large via Functor Driven Development2019-05-01T01:00:00Z2019-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2019-mirage-functors-1Preprint on programming unikernels with ML modules <a href="https://www.irif.fr/~gradanne/" target="_blank">Gabriel Radanne</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.cst.cam.ac.uk/people/jdy22" target="_blank">Jeremy Yallop</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://github.com/hannesm" target="_blank">Hannes Mehnert</a> , <a href="https://github.com/yomimono" target="_blank">Mindy Preston</a> and <a href="https://github.com/djs55" target="_blank">Dave Scott</a> . Working paper at <a href="http://arxiv.org/abs/1905.02529" target="_blank">arXiv</a> . <a href="http://arxiv.org/abs/1905.02529" target="_blank">URL</a> (arxiv.org) <a href="https://doi.org/10.48550/arXiv.1905.02529" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2019-mirage-functors.bib" target="_blank">BIB</a>Snape: The Dark Art of Handling Heterogeneous Enclaves2019-03-01T00:00:00Z2019-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2019-edgesys-snape-1Paper on a framework to rearchitect applications for better TEE support at EdgeSys 2019 <a href="https://zatkh.github.io/" target="_blank">Zahra Tarkhani</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/3301418.3313945" target="_blank">proceedings of the 2nd International Workshop on Edge Systems, Analytics and Networking</a> . <a href="https://dl.acm.org/doi/10.1145/3301418.3313945" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3301418.3313945" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2019-edgesys-snape.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2019-edgesys-snape.pdf" target="_blank">PDF</a>Falsehoods2019-01-11T00:00:00Z2019-01-11T00:00:00ZRichardMhttps://mort.io/blog/falsehoods/Being a list of some cool “Falsehoods programmers believe about …” sites, now redundant thanks to <a href="https://github.com/kdeldycke/awesome-falsehood" target="_blank">https://github.com/kdeldycke/awesome-falsehood</a> : <a href="http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time" target="_blank">…time</a> <a href="http://infiniteundo.com/post/25509354022/more-falsehoods-programmers-believe-about-time" target="_blank">…time, more</a> <a href="http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/" target="_blank">…names</a> <a href="https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/" target="_blank">…addresses</a> <a href="http://wiesmann.codiferes.net/wordpress/?p=15187&lang=en" target="_blank">…geography</a>Distributed Task Scheduling Framework over Irmin2019-01-01T00:00:00Z2019-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/distributed-tasks-irminDistributed Task Scheduling Framework over Irmin This is an idea proposed in 2019 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Mohammed Daudali</a> . 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...A strongly consistent index for email using git and MirageOS2019-01-01T00:00:00Z2019-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/git-maildirA strongly consistent index for email using git and MirageOS This is an idea proposed in 2019 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://github.com/odnh" target="_blank">Oliver Hope</a> . It was co-supervised with <a href="https://github.com/dra27" target="_blank">David Allsopp</a> . <a href="https://en.wikipedia.org/wiki/Maildir" target="_blank">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. The aim of this project therefore is to solve the consistency problem. This can be done by using git, the...Wipeout2018-12-17T00:00:00Z2018-12-17T00:00:00ZRichardMhttps://mort.io/blog/wipeout/I recently decided to go through some old PCs and hard disks (yes, actual spinning bits of metal) and recycle or simply junk them. I figured I should wipe them properly first, and given that they had been installed with a range of OSs, setup a bootable USB stick so that I could boot and wipe in one easy motion. Download <a href="https://alpinelinux.org/downloads/" target="_blank">Alpine Linux</a> <a href="https://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86_64/alpine-extended-3.8.1-x86_64.iso" target="_blank">3.8.1
ISO</a> – I had only x86_64 machines, YMMV obviously Write this to a USB stick using dd (on Linux), or <a href="https://etcher.balena.io/" target="_blank">Balena
Etcher</a> on Windows Insert the stick and boot the machine after making any necessary BIOS changes If the machine has been unbooted for too long or (as one of mine) has a flat CMOS clock battery so cannot retain time across reboots, set the time manually: date --set="20181217" automatically: setup-alpine to start configuring things, then CTRL-C after...The OCaml Platform 1.0 with Reason ML2018-12-11T10:57:40Z2018-12-11T10:57:40ZAnilMhttps://anil.recoil.org/videos/13cf3878-7436-4512-844e-f72f36425bc7<a href="https://anil.recoil.org/videos/13cf3878-7436-4512-844e-f72f36425bc7" target="_blank">The OCaml Platform 1.0 with Reason ML</a> / Dec 2018 Speaking about the OCaml Platform at the ReasonML meetup hosted by Pusher.New opam repository layout for large libraries2018-11-19T00:00:00Z2018-11-19T00:00:00ZAnilMhttps://anil.recoil.org/notes/ocaml-opam-new-layoutManaging 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" target="_blank">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" target="_blank">Jane Street</a> .A modular foreign function interface2018-10-01T01:00:00Z2018-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2018-socp-modular-ffi-1Journal paper on building modular foreign function interfaces <a href="https://www.cst.cam.ac.uk/people/jdy22" target="_blank">Jeremy Yallop</a> , David Sheets and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://linkinghub.elsevier.com/retrieve/pii/S0167642317300709" target="_blank">Science of Computer Programming</a> (vol 164). <a href="https://linkinghub.elsevier.com/retrieve/pii/S0167642317300709" target="_blank">URL</a> (linkinghub.elsevier.com) <a href="https://doi.org/10.1016/j.scico.2017.04.002" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2018-socp-modular-ffi.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2018-socp-modular-ffi.pdf" target="_blank">PDF</a>Foundations of Computer Science2018-09-02T01:00:00Z2018-09-02T01:00:00ZAnilMhttps://anil.recoil.org/notes/focsHere are the various repos used to create the interactive <a href="https://anil.recoil.org/notes/teaching" target="_blank">teaching</a> environment we use for 1A Foundations of Computer Science in Cambridge. It may be useful to other professors who are using OCaml in their courses. <a href="https://github.com/avsm/teaching-fcs" target="_blank">https://github.com/avsm/teaching-fcs</a> is a private repo, but ping me if are teaching and I'll give you access (it has coursework answers in it). We use a Jupyter notebook, with the course written in Markdown using the <a href="https://github.com/realworldocaml/mdx" target="_blank">mdx</a> OCaml parser which evaluates toplevel phrases through the compiler and promotes the output directly into the markdown. We then convert the Markdown into Jupyter format using a <a href="https://github.com/realworldocaml/mdx/pull/124" target="_blank">fork of mdx</a> , and then nbconvert it into LaTeX for the printed notes. A <a href="https://jupyter.org/install.html" target="_blank">JupyterLab</a> installation with a <a href="https://github.com/akabe/ocaml-jupyter" target="_blank">custom OCaml kernel</a> suffices for the live setup. Every student gets their own container on the server and one...The joys of Dune vendoring2018-08-15T01:00:00Z2018-08-15T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2018/08/15/dune-vendoringOf the many wonderful features provided by <a href="https://github.com/ocaml/dune" target="_blank">Dune</a> , my personal favourite remains its composability. It doesn’t gain much mention in the manual because, well, there’s not that 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" target="_blank">logs-syslog</a> library, which also required an addition to one of its dependencies, <a href="https://github.com/verbosemode/syslog-message" target="_blank">syslog-message</a> . Neither of these libraries are presently built using Dune, however porting <a href="https://github.com/dra27/logs-syslog/tree/dune" target="_blank">them</a> <a href="https://github.com/dra27/syslog-message/tree/dune" target="_blank">both</a> was not particularly difficult, and I thought it would be interesting to...Bounding data races in space and time2018-06-01T01:00:00Z2018-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2018-pldi-memorymodel-1Paper on the OCaml memory model and underlying theory at PLDI 2018 <a href="https://github.com/stedolan" target="_blank">Stephen Dolan</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/3192366.3192421" target="_blank">proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation</a> . <a href="https://dl.acm.org/doi/10.1145/3192366.3192421" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/3192366.3192421" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2018-pldi-memorymodel.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2018-pldi-memorymodel.pdf" target="_blank">PDF</a>Urgent problem with camlp5 7.03 and macOS OCaml 4.06.12018-05-04T01:00:00Z2018-05-04T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2018/05/04/opam-camlp5-systemThis was originally on the posted on the <a href="https://opam.ocaml.org/blog/camlp5-system/" target="_blank">OCaml Platform Blog</a> . Packaging problem with opam-repository camlp5 7.03 when upgrading to OCaml 4.06.1 Between 26 Oct 2017 and 17 Feb 2018, the OPAM package for camlp5 7.03 in <a href="https://github.com/ocaml/opam-repository" target="_blank">opam-repository</a> was under certain circumstances able to trigger rm -rf / on macOS and other systems which don’t by default prevent recursive root deletion. This article contains advice on how to identify if your OPAM installation is affected and what you can do to fix it. TL;DR If rm --preserve-root gives a message along the lines of unrecognised option rather than missing operand and you are running OPAM 1.2.2, ensure you run opam update before upgrading your system compiler to OCaml 4.06.1. If you have already upgraded your system compiler to OCaml 4.06.1 (e.g. with Homebrew) then...Concurrent System Programming with Effect Handlers2018-04-01T01:00:00Z2018-04-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2017-tfp-effecthandlers-1Paper on concurrent systems programming with effect handlers at TFP 2017 <a href="https://github.com/stedolan" target="_blank">Stephen Dolan</a> , <a href="https://github.com/seliopou" target="_blank">Spiros Eliopoulos</a> , Daniel Hillerstrom , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> and <a href="https://github.com/lpw25" target="_blank">Leo White</a> . Paper in the <a href="http://link.springer.com/10.1007/978-3-319-89719-6_6" target="_blank">trends in Functional Programming</a> . <a href="http://link.springer.com/10.1007/978-3-319-89719-6_6" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/978-3-319-89719-6_6" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2017-tfp-effecthandlers.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2017-tfp-effecthandlers.pdf" target="_blank">PDF</a>An architecture for interspatial communication2018-04-01T01:00:00Z2018-04-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2018-hotpost-osmose-1Paper on the interspatial networking architecture at HotPOST 2018 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , Gemma Gordon and <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> . Paper in the <a href="https://ieeexplore.ieee.org/document/8406931/" target="_blank">proceedings of the HotPOST 2018 workshop at the IEEE Conference on Computer Communications</a> . <a href="https://ieeexplore.ieee.org/document/8406931/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/INFCOMW.2018.8406931" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2018-hotpost-osmose.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2018-hotpost-osmose.pdf" target="_blank">PDF</a>Founded Tarides and looking to hire OCaml hackers2018-03-02T00:00:00Z2018-03-02T00:00:00ZAnilMhttps://anil.recoil.org/notes/founded-taridesI'm delighted to report that I'm helping my long-time collaborator <a href="https://github.com/samoht" target="_blank">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. 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. -- <a href="https://discuss.ocaml.org/t/tarides-is-looking-for-software-engineers-to-work-on-mirageos-and-irmin/1690" target="_blank">Thomas Gazagnaire</a>A pain in the num2018-01-31T00:00:00Z2018-01-31T00:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2018/01/31/num-systemFixing a packaging error with num on OCaml 4.06.0 system switches 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" target="_blank">OCaml 4.06.0</a> it was the turn of the <a href="https://github.com/ocaml/num" target="_blank">Num</a> library. It is now available as the <a href="https://opam.ocaml.org/packages/num" target="_blank">num package</a> in opam for OCaml 4.06.0 and with a dummy .0 version which is “installed” for prior versions of the compiler which include the library in the distribution. It has always been possible to link with the num library using the num package in <a href="http://projects.camlcity.org/projects/findlib.html" target="_blank">ocamlfind</a> , but in order to maintain compatibility with build systems which don’t use ocamlfind, the standalone Num library files are still installed to OCaml’s lib directory, rather...Probabilistic Programming in OCaml2018-01-01T00:00:00Z2018-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/prob-programming-owlProbabilistic Programming in OCaml This is an idea proposed in 2018 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Hari Chandrasekaran</a> . It was co-supervised with <a href="https://github.com/ctk21" target="_blank">Tom Kelly</a> and <a href="https://github.com/ryanrhymes" target="_blank">Liang Wang</a> . With increasing use of machine learning, it is useful to develop frameworks that support rapid development and functional specification of probabilistic models for inference and reasoning. Probabilistic Programming Languages aim to support concise syntax for specifying models and consequently making inference easier. This can pave way to improvements of the model created, more data gathering and further model refinement in an iterative sense. PPL enables easier development of statistical models and allows decoupling inference from modelling. There is a lot of recent work on PPLs,...Interspatial OS2018-01-01T00:00:00Z2018-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/osmoseInterspatial OS Digital infrastructure in modern urban environments is currently very Internet-centric, and involves transmitting data to physically remote environments. The cost for this is data insecurity, high response latency and unpredictable reliability of services. I am working on Osmose -- a new OS architecture that inverts the current model by building an operating system designed to securely connect physical spaces with extremely low latency, high bandwidth local-area computation capabilities and service discovery. In 2018, I was starting to wrap up a multi-year focus on <a href="https://anil.recoil.org/projects/unikernels" target="_blank">Unikernels</a> , and I went back to look over the state of personal data handling (as I'd finished working on <a href="https://anil.recoil.org/projects/perscon" target="_blank">Personal Containers</a> in 2016). Things had regressed fairly dramatically -- central cloud providers and particularly...CausalRPC: a traceable distributed computation framework2018-01-01T00:00:00Z2018-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/causal-rpcCausalRPC: a traceable distributed computation framework This is an idea proposed in 2018 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://craigfe.io" target="_blank">Craig Ferguson</a> . The project aims to implement an RPC framework in OCaml using the <a href="https://github.com/mirage/irmin" target="_blank">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. The project was completed successfully, with an implementation of <a href="https://github.com/craigfe/causal-rpc" target="_blank">CausalRPC</a> , a distributed computation framework satisfying the above criteria....Back to the Future2017-12-14T00:00:00Z2017-12-14T00:00:00ZRichardMhttps://mort.io/blog/back-to-the-future/Ed: the first in a likely series, this is one of the posts I drafted but never published during my seven years in the blogging wilderness I have been having persistent issues on MacOS with Time Machine backups interacting badly with several configuration elements and other services. This is exacerbated by my use of maildirs to backup emails, with my Gmail account leading to a directory with some millions of files. (Yeah, ok, maybe not wise but hey, we are where we are.) So in the course of trying to get backups to work reliably, I found the following commands useful to at least some degree: mdutil -sav to get info about spotlight indexing status sudo mdutil -Ea -i [off|on] to turn off|on spotlight indexing where possible sudo fs_usage -w mdworker mds_stores backupd obtain the current...Quelle dommage2017-11-05T00:00:00Z2017-11-05T00:00:00ZRichardMhttps://mort.io/blog/quelle-dommage/Ed: this tool is perhaps less relevant now that both <a href="https://mirage.io/" target="_blank">Mirage</a> and <a href="https://ocaml.org/opam/" target="_blank">OPAM</a> have moved on. But perhaps it’ll be resurrected one day so here it is. Largely because I wanted to make a feeble attempt at a French pun, <a href="https://github.com/mor1/dommage/" target="_blank">dommage</a> is a tool for <a href="https://docker.com/" target="_blank">Docker</a> containerising Mirage unikernels. From the <a href="https://github.com/mor1/dommage" target="_blank">README</a> : <a href="https://mort.io/blog/quelle-dommage/#dommage-dockerised-mirage" target="_blank">Dommage, Dockerised Mirage</a> dommage is a shell script that wraps the <a href="https://mirage.io" target="_blank">Mirage</a> CLI to make use of Docker containers meaning that: you can cache the OPAM build artefacts in the container image, speeding up local builds; you can re-use the build container image in Travis builds by publishing it, speeding those up considerably; and you can easily test build -t xen targets on OSX. I’ve tried to minimise interference with the normal operation of <a href="https://mirage.io" target="_blank">Mirage</a> CLI so simply replacing mirage with dommage is...Spring Loading Karabiner in the Autumn2017-10-30T00:00:00Z2017-10-30T00:00:00ZRichardMhttps://mort.io/blog/mess-with-my-keyboard/I recently took the plunge and upgraded my OS X. Not to vN of Sierra as I’d hoped, but to v0 High Sierra – the perils of waiting too long… Unfortunately, this toasted <a href="https://mort.io/blog/mess-with-my-keyboard/#1" target="_blank">1</a> my carefully curated keyboard remappings as <a href="https://pqrs.org/osx/karabiner/" target="_blank">Karabiner</a> used a kernel extension, for which everything changed. All was not lost however, as the rewrite to support Sierra/High Sierra was well underway. Or so I thought until I realised that the configuration file had changed from XML to JSON. And so my configuration journey began. (But it all ends well, so that’s good.) 1 To be honest, I suspect even the Sierra upgrade would’ve done this. <a href="https://mort.io/blog/mess-with-my-keyboard/#controlling-the-config" target="_blank">Controlling the config</a> The first thing was to get the new configuration matters under control. I did this per the documentation, symlinking the config subdirectory from my rc-files repo: cd ~...A bug-fix 12 years in the making2017-10-30T00:00:00Z2017-10-30T00:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2017/10/30/ocaml-unicodeWindows Unicode Support in OCaml 4.06.0 In August 2005, <a href="https://caml.inria.fr/mantis/view.php?id=3771" target="_blank">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" target="_blank">GitHub Pull Request #153</a> almost exactly 2 years ago. This last spring, Clément Franchini at <a href="http://www.altair.com" target="_blank">Altair</a> rebased the patch and added tests. Finally, Nicolás Ojeda Bär at <a href="https://www.lexifi.com" target="_blank">LexiFi</a> took on the challenge of completing the patch and minimising the diff with a view to merging in OCaml 4.06.0. The resulting <a href="https://github.com/ocaml/ocaml/pull/1200" target="_blank">GitHub Pull Request #1200</a> just made it in time for the feature freeze last month, with a few follow-up pull requests since to polish things up. With luck (and testing!), we have a good working story with the 4.06.0 release candidate, which was pushed yesterday....Setting up OCaml’s GitHub CI for user forks2017-09-27T01:00:00Z2017-09-27T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2017/09/27/ocaml-github-ciThere 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" target="_blank">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" target="_blank">AppVeyor</a> which tests some of the native Windows ports. 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...State of the OCaml Platform2017-09-08T01:00:00Z2017-09-08T01:00:00ZAnilMhttps://anil.recoil.org/news/2f824dde-e112-4f4f-890d-1825572ea1c4-1Talk on the state of the OCaml PlatformWindows Console Performance (or lack thereof)2017-09-06T01:00:00Z2017-09-06T01:00:00ZDavidAhttps://www.dra27.uk/blog/platform/2017/09/06/windows-console-funI 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. 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" target="_blank">patches</a> which need to be applied, so this is done using an opam-admin.top script. This little helper program in the Opam developer tools includes a useful function Opam_admin_top.iter_packages which passes every package definition in a repository along with its opam file to a function you provide and writes any changes to that opam back to the repository. There...The State of the OCaml Platform: Sep 20172017-09-01T01:00:00Z2017-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2017-oud-platform-1Annual update on the OCaml Pltform at ICFP <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the the 7th ACM OCaml Users and Developers Workshop. <a href="https://anil.recoil.org/papers/2017-oud-platform.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2017-oud-platform.pdf" target="_blank">PDF</a>Effectively tackling the awkward squad2017-09-01T01:00:00Z2017-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2017-ml-effects-1Paper on how to tackle awkward IO patterns with effect handlers <a href="https://github.com/stedolan" target="_blank">Stephen Dolan</a> , <a href="https://github.com/seliopou" target="_blank">Spiros Eliopoulos</a> , Daniel Hillerstrom , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> and <a href="https://github.com/lpw25" target="_blank">Leo White</a> . Paper in the the ACM ML Workshop. <a href="https://anil.recoil.org/papers/2017-ml-effects.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2017-ml-effects.pdf" target="_blank">PDF</a>Platforms, Packaging, Progress— Addendum2017-09-01T01:00:00Z2017-09-01T01:00:00ZRichardMhttps://mort.io/blog/topkg-addendum/This is a short addendum to my <a href="http://mort.io/blog/2017/08/28/past-present-future/" target="_blank">post of a couple of days
ago</a> caused by my carelessness in writing the <a href="https://github.com/mor1/ocal/blob/13a9a7f5b8f2e0be4c2b55941a00a885df202cf8/ocal.opam#L16-L22" target="_blank">OPAM
file</a> . Careful readers will observe the lack of any dependency on <a href="https://github.com/pqwy/notty/" target="_blank">notty</a> . Read on for what happened next… The result of this carelessness was that everything worked just fine locally, but <a href="https://github.com/ocaml/opam-repository/pull/10176" target="_blank">my PR to the OPAM package
repository</a> failed. Cue much wailing and gnashing of teeth. However, thanks to a moment’s assistance from <a href="http://erratique.ch/contact.en" target="_blank">Daniel Bünzli</a> , this was easy to fix: $ git checkout 0.2.0 # checkout the relevant release version tag $ topkg opam pkg # create the release metadata $ e _build/ocal.0.2.0/opam # invoke editor so I can add the missing dep $ topkg opam submit # submit the updated OPAM metadata, updating the PR Submitting _build/ocal.0.2.0 [ocal-0.2.0.tbz] http://github.com/mor1/ocal/releases/download/0.2.0/ocal-0.2.0.tbz...Platforms, Packaging, Progress2017-08-28T01:00:00Z2017-08-28T01:00:00ZRichardMhttps://mort.io/blog/past-present-future/I recently decided to refresh and update my <a href="https://github.com/mor1/ocal/" target="_blank">ocal</a> package, <a href="https://mort.io/blog/past-present-future/#1" target="_blank">1</a> primarily to port it to use the excellent <a href="https://github.com/pqwy/notty/" target="_blank">notty</a> before adding support for indicating week-of-year. At the same time, I took the opportunity to update the build infrastructure now that the OCaml world has some shiny new packaging and build tools to go with <a href="https://github.com/ocaml/opam/" target="_blank">OPAM</a> , namely <a href="https://github.com/dbuenzli/topkg/" target="_blank">topkg</a> and <a href="https://github.com/janestreet/jbuilder/" target="_blank">jbuilder</a> . So, starting from <a href="http://github.com/djs55/" target="_blank">Dave Scott’s</a> <a href="https://mirage.io/wiki/packaging" target="_blank">wiki entry</a> about how to package <a href="https://mirage.io/" target="_blank">Mirage</a> libraries, here’s what I had to do… 1 A somewhat over-featured replacement for the standard UNIX cal utility, because I got irritated by its American-centricity and my initial <a href="https://github.com/mor1/python-scripts/blob/master/cal.py" target="_blank">Python replacement</a> was just too slow… <a href="https://mort.io/blog/past-present-future/#remove-oasis-remnants" target="_blank">Remove Oasis remnants</a> git rm _oasis setup.ml Makefile * _tags myocamlbuild.ml .merlin mv ocal.opam/opam o && git rm - rf ocal.opam && mv o...ARMing LinuxKit2017-06-02T01:00:00Z2017-06-02T01:00:00ZRichardMhttps://mort.io/blog/arming-linuxkit/As some may know, following the <a href="https://unikernels.com" target="_blank">Unikernel Systems</a> acquisition, I currently do contract work for <a href="https://docker.com" target="_blank">Docker Inc.</a> in addition to my day job here at the <a href="https://www.cl.cam.ac.uk" target="_blank">Cambridge University Computer Laboratory</a> . Recently this has centred on <a href="https://github.com/linuxkit/linuxkit" target="_blank">LinuxKit</a> , “ A toolkit for building secure, portable and lean operating systems for containers ” and, specifically, enabling ARM64 support. I’m pleased to say that a basic proof-of-concept is now complete, and we’re working towards getting support merged upstream. The proof-of-concept was developed using the great ARM64 support provided by <a href="https://packet.net" target="_blank">packet.net</a> , on one of their type 2A boxes. If you fancy trying it out, then hopefully the following instructions will be of use – or just bug me on the <a href="https://slack.packet.net/" target="_blank">packet.net Slack</a> ! <a href="https://mort.io/blog/arming-linuxkit/#building" target="_blank">Building</a> Start by getting an ARM64 box setup. If you have one to hand, great! If not, you could head over...Opening discuss.ocaml.org for the community2017-05-13T01:00:00Z2017-05-13T01:00:00ZAnilMhttps://anil.recoil.org/notes/opening-discuss-ocamlI opened up a <a href="https://discourse.org" target="_blank">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.Docker Docker2017-05-06T01:00:00Z2017-05-06T01:00:00ZRichardMhttps://mort.io/blog/docker-docker/<a href="https://mort.io/blog/docker-docker/#bootstrapping-docker-for-arm64-aka-aarch64" target="_blank">Bootstrapping Docker for ARM64 (aka AARCH64)</a> Basic process is: bootstrap ARM64 go toolchain on x86, and install build ARM64 go1.7.5 toolchain needed for docker build bootstrap ARM64 docker v1.10.3 use bootstrapped docker to provide containerised build environment for building later versions Instructions below are for CentOS 7 for Reasons(tm). Package details and so on will vary on other distros. <a href="https://mort.io/blog/docker-docker/#build-go-bootstrap-toolchain" target="_blank">Build go bootstrap toolchain</a> On x86 host: build basic go1.4 sufficient to bootstrap cd curl - O https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz tar xzvf go1.4-bootstrap-20161024.tar.gz mv go go1.4 cd go1.4/src ./make.bash cross-compile go1.7 (latest) mkdir - p ~ /go/src cd ~ /go/src git clone https://go.googlesource.com/go cd go git checkout go1.7.5 cd src GOOS = linux GOARCH = arm64 ./bootstrap.bash transfer cross-compiled...DaLi: Database as a Library2017-05-01T01:00:00Z2017-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2017-snapl-dali-1Position paper on building databases-as-a-library at SNAPL 2017 <a href="https://gowthamk.github.io" target="_blank">Gowtham Kaki</a> , <a href="https://kcsrk.info" target="_blank">KC Sivaramakrishnan</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.cs.purdue.edu/people/faculty/sjaganna.html" target="_blank">Suresh Jagannathan</a> . Paper in the 2nd Summit on Advances in Programming Languages (SNAPL). <a href="https://anil.recoil.org/papers/2017-snapl-dali.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2017-snapl-dali.pdf" target="_blank">PDF</a>Lab GitLab2017-04-19T01:00:00Z2017-04-19T01:00:00ZRichardMhttps://mort.io/blog/lab-gitlab/Recently had cause to do this as part of the <a href="https://www.cl.cam.ac.uk/research/srg/" target="_blank">SRG’s</a> and <a href="https://ocamllabs.io/" target="_blank">OCaml Labs</a> infrastructure. Thought it might be useful to make some notes, so here they are! Assuming your local sys-admin has kindly created you a suitable VM running Ubuntu with login credentials, etc, read on… Note that several commands that follow must be run as root , via use of sudo below. Given that, think twice before just cutting and pasting them in, obviously… And I am not held responsible for anything either way! <a href="https://mort.io/blog/lab-gitlab/#install-docker" target="_blank">Install Docker</a> On a new Ubuntu stretch/sid (testing) VM: $ lsb_release - drc Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial Next, install up-to-date <a href="https://docker.com/" target="_blank">Docker</a> : sudo apt-get install apt-transport-https ca-certificates apt-key adv -- keyserver hkp://p80.pool.sks-keyservers.net:80 \ -- recv-keys...Google screening2017-01-29T00:00:00Z2017-01-29T00:00:00ZRichardMhttps://mort.io/blog/google-screening/Some time ago, for reasons best known to themselves, a Google recruiter decided to “reach out” on the basis of <a href="https://github.com/mor1/" target="_blank">my GitHub profile</a> to see if I were interested in a role as a Site-Reliability Engineer or possibly a Software Engeering. This entailed a short (~30min) telephone interview to answer some questions. I made a note of those I recalled, in case anyone’s interested. The hawk-eyed and keen-minded among you may discern a certain amount of ambiguity in answers to some of the questions – e.g., is the opposite of malloc() , free() or a garbage collector? are we assuming an Ethernet MAC address? – which the recruiter did not seem to be happy to deal with. But so long as my answer included a reasonable approximation to (presumably) the string they had written down, all was well. What is the Big-O...Customising Homebrew service2017-01-04T00:00:00Z2017-01-04T00:00:00ZRichardMhttps://mort.io/blog/brew-plist/As I could never remember the command to start the offlineimap service using my customised configuration, here it is: brew services start offlineimap ~ /rc-files/homebrew.mxcl.offlineimap.plistBuilding Up Your ARMs2016-11-16T00:00:00Z2016-11-16T00:00:00ZRichardMhttps://mort.io/blog/building-up-your-arms/Due to the impending finish of the EU FP7 funded <a href="https://usercentricnetworking.eu" target="_blank">User Centric
Networking</a> <a href="https://mort.io/blog/building-up-your-arms/#1" target="_blank">1</a> I recently had cause to revisit the excellent work that [Thomas Leonard][talex5] did for the project in getting Xen/ARM running on the [Cubieboard2][cb2] and [Cubietruck][cb3] (aka [Cubieboard3][cb3]). The resulting repo, [mirage/xen-arm-builder][xab], had languished for several months and the past SD card images had some problems and had been allowed to drop off the ’Net as a result. However, sterling work by [Ian Campbell][ijc] at a recent Mirage [hackathon][] had started to resurrect this work based on the [Alpine Linux][alpine] distribution. This seemed a promising place to start, so I did :) <a href="https://mort.io/blog/building-up-your-arms/#building-an-image" target="_blank">Building an Image</a> The end result was an enormous [pull request][pr] that splatted a Brave New World on top of [Thomas’][talex5]...Debugging with jQuery2016-11-16T00:00:00Z2016-11-16T00:00:00ZRichardMhttps://mort.io/blog/jquery-console/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" target="_blank">http://stackoverflow.com/questions/7474354/include-jquery-in-the-javascript-console</a> for the record: var script = document . createElement ( ' script ' ) ; script . src = " https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js " ; document . getElementsByTagName ( ' head ' ) [ 0 ] . appendChild ( script ) ;Zen and the Art of Research Management2016-11-11T00:00:00Z2016-11-11T00:00:00ZRichardMhttps://mort.io/blog/zen-and-the-art-of-research-management/I think this is a bit of a classic, the first written form of which I came across in <a href="https://www.cl.cam.ac.uk/misc/obituaries/needham/" target="_blank">Prof. Roger Needham</a> ’s <a href="https://www.cl.cam.ac.uk/events/50+5/" target="_blank">50+5 Festschrift</a> celebrating his time at the <a href="https://www.cl.cam.ac.uk/" target="_blank">Cambridge University Computer Lab</a> and <a href="https://www.microsoft.com/en-us/research/lab/microsoft-research-cambridge/" target="_blank">Microsoft Research Cambridge</a> . I don’t know who originated it, but the copy there is certainly due to <a href="https://memex.naughtons.org/" target="_blank">John Naughton</a> and <a href="https://en.wikipedia.org/wiki/Robert_Taylor_(computer_scientist)" target="_blank">Bob Taylor</a> . I suppose one might quibble point 12, in that I seem to recall Roger did a lot of pacing about, but a good chair is certainly a worthwhile thing to provide. Anyway, I find myself wanting to point at it from time-to-time, so here it is! By <a href="https://memex.naughtons.org/" target="_blank">John Naughton</a> ( Open University, Milton Keynes, England ), and <a href="https://en.wikipedia.org/wiki/Robert_Taylor_(computer_scientist)" target="_blank">Robert
W. Taylor</a> ( Woodside, California, USA ). HIRE ONLY THE VERY BEST PEOPLE, EVEN IF THEY ARE CUSSED. Perhaps especially if they are cussed. Your guiding principle should be to employ people who are smarter than you. One superb researcher...Evolving the Unikernel Revolution2016-11-10T00:00:00Z2016-11-10T00:00:00ZRichardMhttps://mort.io/blog/unikernel-revolution/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/" target="_blank">unikernels</a> and talking a bit about where we currently see them as usefully being deployed. Specifically, <a href="https://operability.io/" target="_blank">Operability.io 2016</a> a couple of weeks ago was enlightening about some of the problems faced in operating production systems. Some great audience questions and follow-ups after the talk, including some who were even wondering when we’ll see unikernels as ready for the desktop! Of course, with the release of the <a href="https://docker.com/..." target="_blank">Docker for Mac</a> and [Docker for Windows][dfw] products, it’s arguable that we’ve beaten Linux to that accolade, as both products make extensive use of <a href="https://mirage.io" target="_blank">MirageOS</a> unikernel libraries. Having said that, I was pleased to be told that the message about unikernels having a range of...Rat Racing Jetlag2016-11-04T00:00:00Z2016-11-04T00:00:00ZRichardMhttps://mort.io/blog/jetlag-fasting/As I’ve found myself repeating the same information several times recently, and have to dig out the links in question every time, I figured it’d be useful to write this down once so I can point at it. Jetlag is a first-world problem but can be an annoying one– in recent years I’ve found I have a particular problem getting up in the morning when flying east. So, one day, bored in an airport in the US and with only the entire Internet to hand, I thought I’d look around for an explanation at least. I ended up coming across reports of some physiological research – in rats of course – that suggested a way to avoid jetlag. I’ve since tried it over a dozen times, and found it to work in all cases. At this point I no longer care if it’s placebo affect or a genuine explanation or something else :)...Unikernels: the rise of the library hypervisor in MirageOS2016-10-14T01:00:00Z2016-10-14T01:00:00ZAnilMhttps://anil.recoil.org/news/725dda70-b12b-4b1a-a8ae-fa9c22683ff2-1DockerCon talk on unikernels and MirageOSGrubbing Around2016-09-13T01:00:00Z2016-09-13T01:00:00ZRichardMhttps://mort.io/blog/grubbing-around/Nothing earth-shattering here: I recently had the “pleasure” of setting up an ARM64 server. After considerable support, several firmware upgrades, corruption of the main HDD, reinstallation of CentOS7 (recommended, somewhat to my surprise), all that remained was to get an up-to-date Linux built and installed with 32 bit binary support. This took a bit of make config fiddling, but got there after a few tries. And then I had to relearn how grub / grub2 works in this brave new (to me) UEFI CentOS7 world. Herewith some brief commands I found useful while doing so… {% highlight bash %} sudo grep “^menu entry” /boot/efi/EFI/centos/grub.cfg | tr -s “ “ | cut -f 2 -d “’” | cat -n {% endhighlight %} Edit /etc/default/grub to set GRUB_DEFAULT=N for desired value of N Temporarily set the default for...MirageOS Summer 2016 hack retreat2016-06-29T01:00:00Z2016-06-29T01:00:00ZAnilMhttps://anil.recoil.org/notes/mirageos-hack-retreat-2016The functional innards of Docker for Mac and Windows2016-06-24T01:00:00Z2016-06-24T01:00:00ZAnilMhttps://anil.recoil.org/news/dbd7546a-95d8-40af-b286-3cf930767682-1I gave a talk at the <a href="https://functional.works-hub.com" target="_blank">Functional Works</a> meetup, held in <a href="https://janestreet.com" target="_blank">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/" target="_blank">under the hood</a> .Ian Eyberg, Joshua Bernstein, Anil Madhavapeddy at OSCON in Austin2016-06-06T01:00:00Z2016-06-06T01:00:00ZAnilMhttps://anil.recoil.org/news/8c92d6cf-3e05-429f-8c8e-094f77be61c6-1Interviewed by The New Stack at OSCON in Austin, TexasFLICK: Developing and Running Application-Specific Network Services2016-06-01T01:00:00Z2016-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2016-usenix-flick-1Paper on application-specific network services at USENIX ATC 2016 Abdul Alim , <a href="https://www.richardclegg.org/about" target="_blank">Richard Clegg</a> , Luo Mai , Lukas Rupprecht , <a href="https://seckler.org" target="_blank">Eric Seckler</a> , Paolo Costa , <a href="https://profiles.imperial.ac.uk/prp" target="_blank">Peter Pietzuch</a> , Alexander L Wolf , Nik Sultana , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Andrew W. Moore , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , Masoud Koleni , Luis Oviedo , Matteo Miliavacca and <a href="https://drdrmc.github.io/about/" target="_blank">Derek McAuley</a> . Paper in the <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/alim" target="_blank">2016 USENIX Annual Technical Conference (USENIX ATC 16)</a> . <a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/alim" target="_blank">URL</a> (usenix.org) <a href="https://anil.recoil.org/papers/2016-usenix-flick.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2016-usenix-flick.pdf" target="_blank">PDF</a>Improving Docker with Unikernels2016-05-18T01:00:00Z2016-05-18T01:00:00ZAnilMhttps://anil.recoil.org/notes/vpnkit-hyperkitI announce the release of three big components that form the basis for <a href="https://docker.com" target="_blank">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.Local Knowledge2016-03-11T00:00:00Z2016-03-11T00:00:00ZRichardMhttps://mort.io/blog/local-knowledge/A relatively long hiatus this time – blame the Cambridge housing market and the need to simultaneously act both incredibly quickly and mind-numbingly slowly. Also obtaining a <a href="http://www.christs.cam.ac.uk/content/dr-richard-mortier" target="_blank">College
Fellowship</a> and experiencing a <a href="https://blog.docker.com/2016/01/unikernel/" target="_blank">Company Acquisition</a> were considerable (interesting, welcome) distractions… :) As an interim measure, and because I’ve been asked relatively frequently over the last few months, I thought I’d collect some local knowledge^Wopinion, garnered over many long hard years of hanging about in both Cambridge and Nottingham. What follows should be viewed as indicating nothing more than my lack of imagination. Both Cambridge and Nottingham are blessed with many fine pubs, as well as several truly terrible ones. Less said about the latter the better. But among those that I like, and will occasionally drag...Declarative Foreign Function Binding Through Generic Programming2016-02-01T00:00:00Z2016-02-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2016-flops-cmeleon-1Paper on declarative approaches to foreign function bindings at FLOPS 2016 <a href="https://www.cst.cam.ac.uk/people/jdy22" target="_blank">Jeremy Yallop</a> , David Sheets and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="http://link.springer.com/10.1007/978-3-319-29604-3_13" target="_blank">the proceedings of Functional and Logic Programming (FLOPS)</a> . <a href="http://link.springer.com/10.1007/978-3-319-29604-3_13" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/978-3-319-29604-3_13" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2016-flops-cmeleon.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2016-flops-cmeleon.pdf" target="_blank">PDF</a>Unikernel Systems is now part of Docker2016-01-21T00:00:00Z2016-01-21T00:00:00ZAnilMhttps://anil.recoil.org/news/a612e810-d56c-48af-b43e-2893a96b9120-1Announced that Unikernel Systems is now part of DockerUnikernel Systems acquired by Docker2016-01-21T00:00:00Z2016-01-21T00:00:00ZAnilMhttps://anil.recoil.org/notes/docker-buys-unikernel-systemsMy startup <a href="https://anil.recoil.org/projects/unikernels" target="_blank">Unikernel Systems</a> was acquired by <a href="https://anil.recoil.org/docker.com" target="_blank">Docker</a> , and I'll be joining and setting up a UK branch of Docker along with the rest of my team. '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" target="_blank">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.' -- <a href="https://thenewstack.io/docker-buys-unikernel-systems-plans-bring-unikernels-data-center/" target="_blank">The New Stack</a> You can also see an announcement from me explaining the background story:Of Mice and Keyboards2015-11-21T00:00:00Z2015-11-21T00:00:00ZRichardMhttps://mort.io/blog/elcapitan-maps/A bit of a delay since the last post – lots going on! But anyway: I (relatively) recently upgraded my old skool Macbook Pro (look! built-in Ethernet port! DVD drive!) to El Capitan. This was generally rather less faff that the previous upgrade, though it did seem to take rather more reboots than might have been assumed to be strictly necessary before it settled down, and I’d remembered to fix up permissions for Homebrew with sudo chown -R $(whoami):admin /usr/local . So that was ok.  Except… I have a slightly odd keyboard and mouse setup. It’s a UK Macbook which means a slightly tweaked keyboard layout compared to the standard US Macbook keyboard. At my desk, I also use a Microsoft Digital Media...SibylFS: formal specification and oracle-based testing for POSIX and real-world file systems2015-10-01T01:00:00Z2015-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2015-sosp-sibylfs-1Paper on formal specificaiton and testing of filesystems at SOSP 2015 <a href="https://www.tom-ridge.com" target="_blank">Tom Ridge</a> , David Sheets , Thomas Tuerk , <a href="https://www.cs.le.ac.uk/people/ag400/" target="_blank">Andrea Giugliano</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.cl.cam.ac.uk/~pes20/" target="_blank">Peter Sewell</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/2815400.2815411" target="_blank">proceedings of the 25th Symposium on Operating Systems Principles</a> . <a href="https://dl.acm.org/doi/10.1145/2815400.2815411" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2815400.2815411" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2015-sosp-sibylfs.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2015-sosp-sibylfs.pdf" target="_blank">PDF</a>Personal Data: Thinking Inside the Box2015-10-01T01:00:00Z2015-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2015-aarhus-databox-1Paper on personal databoxes at the one-in-a-decade Aarhus conference Amir Chaudhry , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> , Heidi Howard , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://haddadi.github.io/" target="_blank">Hamed Haddadi</a> and <a href="https://drdrmc.github.io/about/" target="_blank">Derek McAuley</a> . Journal paper in <a href="https://tidsskrift.dk/ashcc/article/view/21312" target="_blank">Aarhus Series on Human Centered Computing</a> (vol 1 issue 1). <a href="https://tidsskrift.dk/ashcc/article/view/21312" target="_blank">URL</a> (tidsskrift.dk) <a href="https://doi.org/10.7146/aahcc.v1i1.21312" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2015-aarhus-databox.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2015-aarhus-databox.pdf" target="_blank">PDF</a>Immutable Distributed Infrastructure with Unikernels2015-09-29T01:00:00Z2015-09-29T01:00:00ZAnilMhttps://anil.recoil.org/news/d5fbd6a4-bef2-4fbc-9d02-cb9935e50d8e-1Invited talk at NetPL on Immutable Distributed Infrastructure with UnikernelsThe State of the OCaml Platform2015-09-04T01:00:00Z2015-09-04T01:00:00ZAnilMhttps://anil.recoil.org/news/35e1a70d-0fb4-49b1-86ce-dd6266b812de-1Update on the state of the OCaml PlatformNot-Quite-So-Broken TLS2015-08-01T01:00:00Z2015-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2015-usenixsec-nqsb-1Paper on rebuilding TLS securely but practically at USENIX Security 2015 <a href="https://github.com/pqwy" target="_blank">David Kaloper-Mersinjak</a> , <a href="https://github.com/hannesm" target="_blank">Hannes Mehnert</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.cl.cam.ac.uk/~pes20/" target="_blank">Peter Sewell</a> . Paper in the <a href="https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/kaloper-mersinjak" target="_blank">24th USENIX Security Symposium (USENIX Security 15)</a> . <a href="https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/kaloper-mersinjak" target="_blank">URL</a> (usenix.org) <a href="https://anil.recoil.org/papers/2015-usenixsec-nqsb.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2015-usenixsec-nqsb.pdf" target="_blank">PDF</a>Fame and Fortune!2015-06-24T01:00:00Z2015-06-24T01:00:00ZRichardMhttps://mort.io/blog/bigtechday-mirage/After a slew of HDI related items, a quick <a href="http://openmirage.org/" target="_blank">MirageOS</a> note. I was invited to give a presentation on MirageOS at the <a href="https://www.tngtech.com/en.html" target="_blank">TNG</a> <a href="https://www.tngtech.com/en/big-techday.html" target="_blank">Big TechDay 8</a> conference. This was an interesting, and very broad based, event. It brought together about 500 people with about 25 speakers over one day, on topics from cognitive science to AI to chess playing algorithms to obviating testing through proof reasoning. And, of course, operating systems and <a href="http://openmirage.org/" target="_blank">MirageOS</a> ! If you’re interested, the slides used are available at <a href="http://decks.openmirage.org/bigtechday8" target="_blank">decks.openmirage.org</a> in the usual way, and if you really want to hear me droning on, TNG are making the video (with synchronised slides) <a href="http://www.techcast.com/events/bigtechday8/salvator-1130/?q=salvator-1130" target="_blank">available</a> . As ever, comments welcome!Actual HCI Papers!2015-06-17T01:00:00Z2015-06-17T01:00:00ZRichardMhttps://mort.io/blog/ecscw-and-aarhus/I have to confess to being quite pleased to having a couple of <a href="http://hdiresearch.org/" target="_blank">HDI</a> -related papers accepted recently (even if we can’t even get proper reviews on the <a href="http://ssrn.com/abstract=2508051" target="_blank">original HDI paper</a> – recently judged out-of-scope for the third time, even though the Special Issue in question seemed bang on target!). The first is a full paper to <a href="http://www.ecscw2015.no/" target="_blank">ECSCW’15</a> titled <a href="http://mor1.github.io/publications/pdf/ecscw15-hdi.pdf" target="_blank">Human Data Interaction: Historical Lessons from Social Studies and CSCW</a> . A collaboration with <a href="http://www.andy-crabtree.com/" target="_blank">Dr Andy Crabtree</a> , it examines particularly the role of interaction in HDI and explores how past technical approaches, such as <a href="http://mor1.github.io/publications/pdf/comsnets11-dataware.pdf" target="_blank">Dataware</a> , to the challenges posed by HDI haven’t fully considered the inherently social nature of data. The second is a short paper to the decennial – seriously: every ten years! – <a href="http://aarhus2015.org" target="_blank">Aarhus 2015</a> conference titled <a href="http://mor1.github.io/publications/pdf/aarhus15-databox.pdf" target="_blank">Personal Data: Thinking Inside the Box</a> . This sets out a vision for an embodiment of a Databox : a physical device supported...Rescuing a Shattered Nexus 42015-05-21T01:00:00Z2015-05-21T01:00:00ZRichardMhttps://mort.io/blog/nexus-4-rescue/A little while ago, before I’d done the smart thing and got myself a case for my Nexus 4, I dropped it a couple of inches onto a hard surface at the wrong angle. The screen promptly shattered – and this was bad because without the touch screen, I couldn’t interact with it, I had some photos on it from son#1 birthday party that hadn’t been copied off, and I hadn’t got round to enabling USB access to the filesystem or any of the debug/developer options. So what to do? I really didn’t want to lose those photos. A couple of hours searching the Interwebs and a little bit of experimentation later, and I managed it. Basically, download and apply the clockwork mod bootloader, and this turns on the developer options that allow access to the filesystem via the Android SDK tools. To find out the...Moving Onto Mirage2015-05-20T01:00:00Z2015-05-20T01:00:00ZRichardMhttps://mort.io/blog/moving-onto-mirage/For a little while I’ve had <a href="http://github.com/mor1/mor1.github.io" target="_blank">this site</a> running as a <a href="http://openmirage.org/" target="_blank">MirageOS</a> unikernel, shadowing the main site hosted on <a href="http://github.com/" target="_blank">GitHub</a> . I’ve finally decided to make the switch, as part of moving over to take advantage of Mirage’s DNS and TLS libraries. Following the usual pattern, as previously explained by <a href="http://amirchaudhry.com/from-jekyll-to-unikernel-in-fifty-lines/" target="_blank">Amir</a> , <a href="http://www.somerandomidiot.com/blog/2014/08/19/i-am-unikernel/" target="_blank">Mindy</a> and others, the process is: Construct a static <a href="http://jekyllrb.com" target="_blank">Jekyll</a> site. Write a <a href="http://travis-ci.com/" target="_blank">Travis</a> YAML file to cause <a href="http://travis-ci.com/" target="_blank">Travis</a> to build the unikernel image and commit it back to the deployment repository. Write a Git post-merge hook for the deployment repository, so that the latest unikernel is automatically booted when a merge is detected, i.e., there is a new unikernel image. Write a cron job that periodically polls the deployment repository, pulling any changes. Building a <a href="http://jekyllrb.com" target="_blank">Jekyll</a>...Unikernels: Functional Infrastructure with Mirage OS2015-05-12T01:00:00Z2015-05-12T01:00:00ZAnilMhttps://anil.recoil.org/news/55852136-843d-4043-98e7-6b46c6d39b01-1Talk at Esper on functional programming with unikernelsJitsu: Just-In-Time Summoning of Unikernels2015-05-04T01:00:00Z2015-05-04T01:00:00ZAnilMhttps://anil.recoil.org/news/ad4658f5-ca4f-42f3-b61a-58f13dcdeb1a-1NSDI 2015 talk on JitsuKadupul: Livin' on the Edge with Virtual Currencies and Time-Locked Puzzles2015-05-01T01:00:00Z2015-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2015-diynet-kadupul-1Workshop paper on DIY networking using timelock puzzles <a href="http://www.skjegstad.com/about/" target="_blank">Magnus Skjegstad</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/2753488.2753492" target="_blank">proceedings of the 2015 Workshop on Do-it-yourself Networking: an Interdisciplinary Approach</a> . <a href="https://dl.acm.org/doi/10.1145/2753488.2753492" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2753488.2753492" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2015-diynet-kadupul.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2015-diynet-kadupul.pdf" target="_blank">PDF</a>Jitsu: Just-In-Time Summoning of Unikernels2015-05-01T01:00:00Z2015-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2015-nsdi-jitsu-1Paper on spinning up low-latency unikernels per-connection at NSDI 2015 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/https://roscidus.com" target="_blank">Thomas Leonard</a> , <a href="http://www.skjegstad.com/about/" target="_blank">Magnus Skjegstad</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , David Sheets , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , Amir Chaudhry , Balraj Singh , <a href="https://github.com/jonludlam" target="_blank">Jon Ludlam</a> , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> and Ian Leslie . Paper in the <a href="https://www.usenix.org/conference/nsdi15/technical-sessions/presentation/madhavapeddy" target="_blank">12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)</a> . <a href="https://www.usenix.org/conference/nsdi15/technical-sessions/presentation/madhavapeddy" target="_blank">URL</a> (usenix.org) <a href="https://anil.recoil.org/papers/2015-nsdi-jitsu.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2015-nsdi-jitsu.pdf" target="_blank">PDF</a>Diamonds are a Chap's Best Friend2015-04-09T01:00:00Z2015-04-09T01:00:00ZRichardMhttps://mort.io/blog/inconstant-ruby/As <a href="https://mort.io/blog/2015/01/15/begin-again/" target="_blank">noted previously</a> , this site is basically a <a href="https://github.com/" target="_blank">Github</a> -hosted <a href="http://jekyllrb.com/" target="_blank">Jekyll</a> site at present, though one that can be built as a <a href="http://openmirage.org/" target="_blank">Mirage</a> unikernel. Part of the <a href="http://openmirage.org/" target="_blank">Mirage</a> workflow to publish a new post involves using <a href="https://travis-ci.org/" target="_blank">Travis CI</a> to build and then commit back a new unikernel image. Thus it is currently necessary to run <a href="http://jekyllrb.com/" target="_blank">Jekyll</a> in the <a href="https://travis-ci.org/" target="_blank">Travis</a> build scripts, and the dynamism of the Ruby environment meant that this broke (again) recently as one of the github-pages gem’s dependencies now depends on Ruby >= 2.0 while the default Rubies on the <a href="https://travis-ci.org/" target="_blank">Travis</a> Ubuntu image for C language builds is 1.8 (via Ubuntu packaging) or, if you remove that one, 1.9 (via <a href="https://rvm.io/" target="_blank">rvm</a> ). Read on to find out how to fix this… The fix that currently works for me turns out to be relatively simple: remove all the...Taking it to the People People2015-04-08T01:00:00Z2015-04-08T01:00:00ZRichardMhttps://mort.io/blog/hdi-seminar/Looks like I get a chance to run my mouth off again :) Upcoming <a href="http://hdiresearch.org/" target="_blank">HDI</a> <a href="http://www.crassh.cam.ac.uk/events/26198" target="_blank">research
seminar</a> , organised by <a href="http://www.bigdata.cam.ac.uk/" target="_blank">Cambridge Big
Data</a> / <a href="http://www.digitalhumanities.cam.ac.uk/" target="_blank">Digital
Humanities</a> . In short, details are: 20th April 2015, 14:00–16:00 in S1, Alison Richard Building, West Road, Cambridge . If you’d like to attend, please do register at <a href="http://www.eventbrite.co.uk/e/human-data-interaction-cambridge-big-datadigital-humanities-seminar-tickets-16337148852" target="_blank">http://www.eventbrite.co.uk/e/human-data-interaction-cambridge-big-datadigital-humanities-seminar-tickets-16337148852</a> . And just because pixels are, in some loose sense, nearly free, here’s the abstract from the seminar link above: The increasing generation and collection of personal data has created a complex ecosystem, often collaborative but sometimes combative, around companies and individuals engaging in the use of these data. We propose that the interactions between these agents warrant a new topic of study: Human-Data Interaction (HDI), that sits at the intersection of various disciplines, including computer...Reviewing the second year of OCaml Labs in 20142015-04-02T01:00:00Z2015-04-02T01:00:00ZAnilMhttps://anil.recoil.org/notes/ocamllabs-2014-reviewThe <a href="https://anil.recoil.org/projects/ocamllabs" target="_blank">OCaml Labs</a> initiative within the <a href="http://www.cl.cam.ac.uk" target="_blank">Cambridge
Computer Laboratory</a> is now just over two years old, and it is time for an update about our activities since the last update at the <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/news/index.html#Dec%202013" target="_blank">end of
2013</a> and <a href="https://anil.recoil.org/2012/10/19/announcing-ocaml-labs.html" target="_blank">2012</a> . The theme of our group was not to be pure research, but rather a hybrid group that takes on some of the load of day-to-day OCaml maintenance from <a href="http://caml.inria.fr/" target="_blank">INRIA</a> , as well as help grow the wider community and meet our own research agendas around topics such as <a href="https://queue.acm.org/detail.cfm?id=2566628" target="_blank">unikernels</a> . To this end, all of our projects have been highly collaborative, often involving colleagues from <a href="http://ocamlpro.com" target="_blank">OCamlPro</a> , <a href="http://caml.inria.fr/" target="_blank">INRIA</a> , <a href="http://janestreet.com" target="_blank">Jane Street</a> , <a href="http://lexifi.com" target="_blank">Lexifi</a> and <a href="http://citrix.com" target="_blank">Citrix</a> . This post covers our progress in tooling, the compiler and language, community efforts, research projects and concludes with our priorities for 2015. OCaml: it's a dog's life. In...I Think Someone Else Is Also Following Me...2015-03-16T00:00:00Z2015-03-16T00:00:00ZRichardMhttps://mort.io/blog/being-followed-postscript/Turns out others were listening too – notably the USA’s <a href="http://www.darpa.mil/" target="_blank">DARPA</a> . The recent announcement of the <a href="http://www.darpa.mil/NewsEvents/Releases/2015/03/11.aspx" target="_blank">Brandeis</a> programme makes explicit reference to <a href="http://ssrn.com/abstract=2508051" target="_blank">HDI</a> and <a href="http://hdiresearch.org/" target="_blank">our website</a> . This has been picked up by <a href="http://gcn.com/articles/2015/03/12/darpa-brandeis.aspx" target="_blank">GCN</a> , <a href="http://www.usatoday.com/story/nation/2015/03/16/data-privacy-darpa-brandeis/70222556/" target="_blank">USAToday</a> , <a href="http://www.nbcnews.com/tech/security/darpa-unexpectedly-announces-program-improve-online-piracy-n322601" target="_blank">NBCNews</a> , <a href="http://www.engadget.com/2015/03/12/darpa-is-trying-to-reinvent-online-privacy/" target="_blank">Engadget</a> among others. With $60M potentially on the table, I hope that there’ll be many more who get interested in pushing HDI forwards now :)I Think Someone's Following Me...2015-03-02T00:00:00Z2015-03-02T00:00:00ZRichardMhttps://mort.io/blog/someones-following-me/It’s always <a href="https://mort.io/blog/someones-following-me/#1" target="_blank">1</a> nice when someone notices what you’re doing, and I was pleasantly surprised recently to find that someone had indeed been watching. <a href="https://mort.io/blog/someones-following-me/#2" target="_blank">2</a> 1 Well, usually. Unless you’re doing something embarrassing like, e.g., dancing. 2 Though in fact, given the pattern involved, I suspect it may be my colleague, <a href="http://www.eecs.qmul.ac.uk/~hamed/" target="_blank">Dr Hamed Haddadi</a> who’s actually being followed. To whit, the fact that they also picked up on <a href="https://www.technologyreview.com/2014/09/12/171400/the-murky-world-of-third-party-web-tracking/" target="_blank">a
study</a> of third-party web-tracking from last year. Specifically, it appears that someone at MIT Technology Review has noticed the work of me and some of my pals: our work on <a href="https://www.technologyreview.com/2015/01/05/169715/the-emerging-science-of-human-data-interaction/" target="_blank">HDI</a> and a recent sketch of some follow-on work we’re pursuing around building a personal <a href="https://www.technologyreview.com/2015/01/26/169495/how-a-box-could-solve-the-personal-data-conundrum/" target="_blank">Databox</a> . Independently of that, the latter also happened to get picked up by <a href="http://www.theguardian.com/profile/johnnaughton" target="_blank">John Naughton</a> in the <a href="http://www.theguardian.com/technology/2015/feb/01/control-personal-data-databox-end-user-agreement" target="_blank">Guardian</a>...ICFP 2015 - a call for sponsorship and how you can help2015-02-18T00:00:00Z2015-02-18T00:00:00ZAnilMhttps://anil.recoil.org/notes/icfp15-call-for-sponsorshipsThe call for papers for this year’s <a href="http://icfpconference.org/icfp2015/" target="_blank">International Conference on Functional
Programming</a> is about to close in two weeks, and over a hundred cutting-edge research papers will be submitted on the theory, application, and experiences behind functional programming and type theory. In addition to the main conference, there are also over 10 big <a href="http://icfpconference.org/icfp2015/affiliated.html" target="_blank">affiliated workshops</a> that run throughout the week on topics ranging from specific languages ( <a href="http://www.erlang.org/workshop/2014/" target="_blank">Erlang</a> , <a href="http://www.haskell.org/haskellwiki/HaskellImplementorsWorkshop" target="_blank">Haskell</a> , <a href="http://ocaml.org/meetings/ocaml/2014/" target="_blank">OCaml</a> ), the broader <a href="http://cufp.org/" target="_blank">commercial
community</a> , and even <a href="http://functional-art.org/" target="_blank">art and
music</a> . 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/" target="_blank">Phil Wadler</a> , or from rain-soaked discussions with <a href="http://research.microsoft.com/en-us/people/simonpj/" target="_blank">Simon PJ</a> at <a href="http://mikkeller.dk/" target="_blank">Mikeller</a> , or in my case, from being convinced to <a href="https://blogs.janestreet.com/the-making-of-real-world-ocaml/" target="_blank">write a book</a> while in a smoky Tokyo bar. This...Looping the Loop2015-02-17T00:00:00Z2015-02-17T00:00:00ZRichardMhttps://mort.io/blog/looping-the-loop/In a fit of blogging mania, here’s another one literally barely days after the previous one. Maybe I’ll crack this yet. Anyway, this is just a short one with what verges on a Technical Contribution. To whit: I recently sorted out <a href="http://mort.io/" target="_blank">this domain</a> and was having some issues getting some consistency between what dig , Chrome and my <a href="http://gandi.net" target="_blank">domain provider</a> believed to be the correct state. In particular, I was switching over to make the domain properly live rather than simply a 301 Moved Permanently redirect to my old pages at Nottingham. It turns out this was probably mostly Chrome being confused. It seems that it caches 301 Moved Permanently redirects fairly aggressively and the cached entries are not discarded when you go through the standard mechanisms to clear caches. After a bit of experimentation and...Talks, Old and New2015-02-14T00:00:00Z2015-02-14T00:00:00ZRichardMhttps://mort.io/blog/talks-old-and-new/Thanks to an invitation from <a href="http://research.microsoft.com/en-us/um/people/hiballan/" target="_blank">Hitesh</a> , I recently got the chance to revisit my old stomping ground at <a href="http://research.microsoft.com/en-us/labs/cambridge/" target="_blank">Microsoft Research Cambridge</a> . Well, I say “old” – in the intervening 7 years, they’ve moved to a rather splendid new building at the other end of Cambridge, just next to the station. (And improved the coffee too, not that it wasn’t pretty good to start with!) Anyway, this was a pleasant chance to catch up with some old colleagues, meet some new ones, and even speak to my most recently graduated Ph.D. student, <a href="http://research.microsoft.com/en-us/people/a-ewluge/" target="_blank">Dr Ewa Luger</a> – and who’d’ve thought that I’d ever end up supervising someone coming from the discipline of Political Science too! The ostensible reason was to talk about the <a href="http://homenetworks.ac.uk/" target="_blank">Homework</a> project – a talk I’ve given a <a href="https://www.youtube.com/watch?v=AdtVSrazVaQ" target="_blank">few times now</a> – and to lead from that into discussing some of my current agenda, around...Delivered keynote at BOB 2015 on MirageOS2015-01-23T00:00:00Z2015-01-23T00:00:00ZAnilMhttps://anil.recoil.org/news/0bc235e0-b154-4cbf-a84a-61240f16d60a-1I hopped over to Berlin to give the keynote at <a href="https://bobkonf.de/2015/en/" target="_blank">BOB 2015</a> keynote on functional operating systems. If you're in the region, I highly recommend attending BOB as a superbly organised conference with a diverse and interesting crowd of functional programmers.Begin, Again!2015-01-15T00:00:00Z2015-01-15T00:00:00ZRichardMhttps://mort.io/blog/begin-again/Specifically, I’ve left <a href="http://www.horizon.ac.uk" target="_blank">Horizon</a> and the <a href="http://www.cs.nott.ac.uk" target="_blank">School of Computer Science</a> at the <a href="http://www.nottingham.ac.uk" target="_blank">University of Nottingham</a> to (re-)join the <a href="http://www.cam.ac.uk" target="_blank">Cambridge University</a> <a href="http://www.cl.cam.ac.uk" target="_blank">Computer Laboratory</a> . In celebration, and frankly because it was long overdue anyway, I’ve reworked my website. What do you think? For the curious, or the technically inclined, the site now uses <a href="http://foundation.zurb.com/" target="_blank">ZURB Foundation</a> 5.5.0 (the current downloadable release as of yesterday), with some slightly customised CSS. The site itself is largely written in <a href="http://daringfireball.net/projects/markdown/" target="_blank">Markdown</a> and currently generated using <a href="http://jekyllrb.com/" target="_blank">Jekyll</a> to be hosted on <a href="http://github.com" target="_blank">Github</a> . It’s actually gone through an interim phase where it was parsed by the OCaml <a href="https://github.com/pw347/omd" target="_blank">OMD</a> parser before being crunched into a <a href="https://github.com/mirage/mirage-types" target="_blank">Mirage KV_RO</a> filesystem which is then compiled into a type-safe, self-contained web appliance that serves these pages and no other using the OCaml <a href="https://github.com/mirage/cowabloga" target="_blank">Cowabloga</a> ,...Raft Refloated: Do We Have Consensus?2015-01-01T00:00:00Z2015-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2014-sigops-raft-1Paper on reproducing the raft consensus protocol Heidi Howard , <a href="https://cs.brown.edu/people/malte/" target="_blank">Malte Schwarzkopf</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Journal paper in <a href="https://dl.acm.org/doi/10.1145/2723872.2723876" target="_blank">ACM SIGOPS Operating Systems Review</a> (vol 49 issue 1). <a href="https://dl.acm.org/doi/10.1145/2723872.2723876" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2723872.2723876" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2014-sigops-raft.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2014-sigops-raft.pdf" target="_blank">PDF</a>Mergeable persistent data structures2015-01-01T00:00:00Z2015-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2015-jfla-irmin-1Paper on mergeable data structures using Irmin (nee Irminsule) at JFLA 2015 Benjamin Farinier , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the vingt-sixiemes Journees Francophones des Langages Applicatifs (JFLA 2015). <a href="https://anil.recoil.org/papers/2015-jfla-irmin.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2015-jfla-irmin.pdf" target="_blank">PDF</a>CUFP'13 scribe's report2015-01-01T00:00:00Z2015-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2013-cufp-scribe-1Published the scribe's report for CUFP 2013 in JFP <a href="https://monkey.org/~marius/" target="_blank">Marius Eriksen</a> , <a href="https://www.deinprogramm.de/sperber/" target="_blank">Michael Sperber</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://www.cambridge.org/core/journals/journal-of-functional-programming/article/cufp13-scribes-report/F38AAE60DA9AD95E1737E3F863075C13" target="_blank">Journal of Functional Programming</a> (vol 25). <a href="https://www.cambridge.org/core/journals/journal-of-functional-programming/article/cufp13-scribes-report/F38AAE60DA9AD95E1737E3F863075C13" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.1017/S0956796815000052" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2013-cufp-scribe.bib" target="_blank">BIB</a>Codemesh 2014: Nymote: Git Your Own Cloud Here2014-12-17T00:00:00Z2014-12-17T00:00:00ZAnilMhttps://anil.recoil.org/news/644914a5-a40b-4ef7-bb17-cea43c95dd09-1Gave Codemesh 2014 talk on NymoteJitsu: Just-in-Time Summoning of Unikernels (new directions in operating systems)2014-11-25T00:00:00Z2014-11-25T00:00:00ZAnilMhttps://anil.recoil.org/news/46968fa0-e5bd-4df8-98e1-3cf88d9b31e5-1New Directions in Operating Systems talk on JitsuRegional clouds: technical considerations2014-11-01T00:00:00Z2014-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2014-regional-clouds-1Report on regional cloud computing law available <a href="https://www.cl.cam.ac.uk/~js573/" target="_blank">Jatinder Singh</a> , <a href="https://www.cl.cam.ac.uk/~jmb25/" target="_blank">Jean Bacon</a> , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://tfjmp.org" target="_blank">Thomas Pasquier</a> , <a href="https://www.kuan0.com" target="_blank">W. Kuan Hon</a> and <a href="https://www.qmul.ac.uk/law/people/academic-staff/items/millard.html" target="_blank">Christopher Millard</a> . Technical report (UCAM-CL-TR-863) at <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-863.html" target="_blank">University of Cambridge, Computer Laboratory</a> . <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-863.html" target="_blank">URL</a> (cl.cam.ac.uk) <a href="https://doi.org/10.48456/tr-863" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2014-regional-clouds.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2014-regional-clouds.pdf" target="_blank">PDF</a>MirageOS 2.0: branch consistency for Xen Stub Domains2014-10-17T01:00:00Z2014-10-17T01:00:00ZAnilMhttps://anil.recoil.org/news/c9273fa0-802f-4d2b-8f0d-db383943564e-1At the Xen Summit speaking about branch consistency for Xen Stub DomainsOCaml 2014: The OCaml Platform v1.02014-09-05T01:00:00Z2014-09-05T01:00:00ZAnilMhttps://anil.recoil.org/news/4390c1d0-ed4f-4c01-9e10-dab2a3faed7a-1Talk on the OCaml Platform reaching v1.0Haskell Symposium 2014 Keynote on functional OS design2014-09-05T01:00:00Z2014-09-05T01:00:00ZAnilMhttps://anil.recoil.org/news/ed84b2eb-1b93-4dc3-b746-63a4af13d4ea-1Gave Haskell Symposium 2014 Keynote on functional OS designThe OCaml Platform v1.02014-09-01T01:00:00Z2014-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2014-oud-platform-1Paper on the OCaml Platform status <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Amir Chaudhry , Jeremie Dimino , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , Louis Gesbert , <a href="https://github.com/https://roscidus.com" target="_blank">Thomas Leonard</a> , David Sheets , <a href="https://github.com/mshinwell" target="_blank">Mark Shinwell</a> , <a href="https://github.com/lpw25" target="_blank">Leo White</a> and <a href="https://www.cst.cam.ac.uk/people/jdy22" target="_blank">Jeremy Yallop</a> . Paper in the the 4th ACM OCaml Users and Developers Workshop. <a href="https://anil.recoil.org/papers/2014-oud-platform.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2014-oud-platform.pdf" target="_blank">PDF</a>Multicore OCaml2014-09-01T01:00:00Z2014-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2014-oud-multicore-1First paper on multicore OCaml's design at the OCaml Workshop <a href="https://github.com/stedolan" target="_blank">Stephen Dolan</a> , <a href="https://github.com/lpw25" target="_blank">Leo White</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the the 4th ACM OCaml Users and Developers Workshop. <a href="https://anil.recoil.org/papers/2014-oud-multicore.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2014-oud-multicore.pdf" target="_blank">PDF</a>Irminsule: a branch-consistent distributed library database2014-09-01T01:00:00Z2014-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2014-oud-irminsule-1Paper at the OCaml Workshop on the Irmin database library <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , Amir Chaudhry , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , David Sheets and Gregory Tsipenyuk . Paper in the the 4th ACM OCaml Users and Developers Workshop. <a href="https://anil.recoil.org/papers/2014-oud-irminsule.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2014-oud-irminsule.pdf" target="_blank">PDF</a>Talks from OCaml Labs during ICFP 20142014-08-31T01:00:00Z2014-08-31T01:00:00ZAnilMhttps://anil.recoil.org/notes/ocaml-labs-at-icfp-2014It's the ever-exciting week of the <a href="https://icfpconference.org/" target="_blank">International Conference on
Functional Programming</a> again in Sweden, and this time <a href="http://ocaml.io" target="_blank">OCaml Labs</a> has a variety of talks, tutorials and keynotes to deliver throughout the week. This post summarises all them so you can navigate your way to the right session. Remember that once you register for a particular day at ICFP, you can move between workshops and tutorials as you please. Gothenburg, the location of this year's ICFP conference. Quick links to the below in date order: Talk on <a href="https://anil.recoil.org/#coeffects" target="_blank">Coeffects, a Calculus of Context-dependent
Computation</a> , Monday 1st September, 16:30-17:20, ICFP Day 1. Talk on <a href="https://anil.recoil.org/#implicits" target="_blank">Modular Implicits</a> , Thu 4th September, 14:25-14:50, ML Workshop. Talk on <a href="https://anil.recoil.org/#modulealiases" target="_blank">Module Aliases</a> , Thu 4th September, 09:35-10:00, ML Workshop. Talk on <a href="https://anil.recoil.org/#metamirage" target="_blank">Metaprogramming in the Mirage OS</a> , Thu 4th September, 14:50-15:10, ML Workshop. Keynote talk on <a href="https://anil.recoil.org/#unikernels" target="_blank">Unikernels</a> , Fri 5th September, 09:00-10:00,...FLOSS Weekly 302: Open Mirage2014-07-23T01:00:00Z2014-07-23T01:00:00ZAnilMhttps://anil.recoil.org/news/5cdf2eef-9053-428e-b8b3-ab5ae274c129-1Appeared on FLOSS Weekly 302 about Open MirageMirageOS v2.0: a recap of new features2014-07-22T01:00:00Z2014-07-22T01:00:00ZAnilMhttps://anil.recoil.org/notes/announcing-mirageos-2This 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" target="_blank">Irmin</a> and even a pure OCaml TLS stack.MirageOS v1.2 released and the runup to 2.02014-07-08T01:00:00Z2014-07-08T01:00:00ZAnilMhttps://anil.recoil.org/notes/announcing-mirageos-1-2I 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!SE Radio Episode 204: Anil Madhavapeddy on the Mirage Cloud Operating System and the OCaml Language2014-05-01T01:00:00Z2014-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/d5411e25-7845-41e8-b3ec-ab3c33ce13c8-1Appeared on SE Radio Episode 204 about Mirage and OCamlCodio: build Mirage unikernels from a browser2014-03-26T00:00:00Z2014-03-26T00:00:00ZAnilMhttps://anil.recoil.org/notes/codio-now-has-opam-supportI noticed an offhand tweet from Phil Tomson about <a href="http://codio.com/" target="_blank">Codio</a> adding OPAM support, and naturally had to take a quick look. I was really 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" target="_blank">Mirage Xen website</a> unikernel directly from my web browser in less than a minute, including registration! I signed up to Codio for free (since it’s <a href="https://web.archive.org/web/20170914182531/https://codio.com/avsm/Mirage-WWW/" target="_blank">a public project</a> ) using GitHub oAuth (only public identity access required at first, no repository access). Selected a git project and pointed it at the <a href="https://web.archive.org/web/20170914182531/https://github.com/mirage/mirage-www" target="_blank">mirage-www</a> repository. At this point, you get the usual file explorer and code editor view in your browser. The magic begins when you go to “Tools/Terminal”, and an interactive Ubuntu shell pops up. Since Codio added <a href="https://web.archive.org/web/20170914182531/https://codio.com/s/blog/2014/03/new-parts/" target="_blank">opam support</a> , setting up the Mirage environment is a breeze: I notice Codio supports OCaml and opam on...Easily OPAM switching to any OCaml feature request2014-03-25T00:00:00Z2014-03-25T00:00:00ZAnilMhttps://anil.recoil.org/notes/ocaml-github-and-opamGabriel Scherer <a href="http://gallium.inria.fr/blog/patch-review-on-github/" target="_blank">announced an
experiment</a> to host OCaml compiler pull requests on <a href="https://github.com/ocaml/ocaml/pulls" target="_blank">GitHub</a> for six months. There is a general feeling that GitHub would be a more modern hosting platform than the venerable but reliable <a href="http://caml.inria.fr/mantis/changelog_page.php" target="_blank">Mantis</a> setup that has in place for over a decade, but the only way to find out for sure is by trying it out for a while. One of the great benefits of using GitHub is their excellent <a href="http://developer.github.com/v3/" target="_blank">API</a> to easily automate workflows around issues and pull requests. After a suggestion from Jeremy Yallop and David Sheets over lunch, I decided to use this to make it easier to locally apply compiler patches. OPAM has a great <a href="https://opam.ocaml.org/doc/Advanced_Usage.html#h2-Usingadifferentcompiler" target="_blank">compiler
switch</a> feature that lets you run simultaneous OCaml installations and swap between them easily. For instance, the default setting gives you access to: $ opam switch system...ICFP 2014 - a call for sponsorship and how you can help2014-03-03T00:00:00Z2014-03-03T00:00:00ZAnilMhttps://anil.recoil.org/notes/icfp-call-for-sponsorshipsThe call for papers for this year’s <a href="http://icfpconference.org/icfp2014/" target="_blank">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" target="_blank">affiliated workshops</a> that run throughout the week on topics ranging from specific languages ( <a href="http://www.erlang.org/workshop/2014/" target="_blank">Erlang</a> , <a href="http://www.haskell.org/haskellwiki/HaskellImplementorsWorkshop" target="_blank">Haskell</a> , <a href="http://ocaml.org/meetings/ocaml/2014/" target="_blank">OCaml</a> ), the broader <a href="http://cufp.org/" target="_blank">commercial community</a> , and even <a href="http://functional-art.org/" target="_blank">art and music</a> . 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/" target="_blank">Phil Wadler</a> , or from rain-soaked discussions with <a href="http://research.microsoft.com/en-us/people/simonpj/" target="_blank">Simon PJ</a> at <a href="http://mikkeller.dk/" target="_blank">Mikeller</a> , or in my case, from being convinced to <a href="https://blogs.janestreet.com/the-making-of-real-world-ocaml/" target="_blank">write a book</a> while in a smoky Tokyo bar. Functional...Using Dust Clouds to Enhance Anonymous Communication2014-03-01T00:00:00Z2014-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2010-iswp-dustclouds-1Paper on building dust clouds for anonymous communication <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Theodore Hong , <a href="https://github.com/mrry" target="_blank">Derek Murray</a> and <a href="https://cs.brown.edu/people/malte/" target="_blank">Malte Schwarzkopf</a> . Paper in the <a href="http://link.springer.com/10.1007/978-3-662-45921-8_10" target="_blank">security Protocols XVIII</a> . <a href="http://link.springer.com/10.1007/978-3-662-45921-8_10" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/978-3-662-45921-8_10" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2010-iswp-dustclouds.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2010-iswp-dustclouds.pdf" target="_blank">PDF</a>Unikernels, and the Rise of the Virtual Library Operating System2014-01-13T00:00:00Z2014-01-13T00:00:00ZAnilMhttps://anil.recoil.org/notes/unikernels-in-cacmThe Communications of the ACM have just published an article that <a href="https://github.com/djs55" target="_blank">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" target="_blank">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" target="_blank">Melange</a> and the <a href="http://anil.recoil.org/papers/2010-icfp-xen.pdf" target="_blank">Xen toolstack</a> . You can read either the <a href="http://cacm.acm.org/magazines/2014/1/170866-unikernels" target="_blank">print article</a> (requires an ACM subscription) or the <a href="http://queue.acm.org/detail.cfm?id=2566628" target="_blank">open access version</a> on the ACM Queue. There's been some interesting discussion about it already online: On <a href="http://www.reddit.com/r/programming/comments/1upy41/mirage_os_10_released_last_december/" target="_blank">Reddit</a> , a number of queries about how it fits into the space of containers, microkernels, and other experimental operating systems. Coverage from <a href="http://www.eweek.com/cloud/xen-project-builds-its-own-cloud-os-mirage.html" target="_blank">eWeek</a> , <a href="http://www.infoworld.com/t/operating-systems/xen-mirage-the-less-more-cloud-os-233823" target="_blank">InfoWorld</a> , and <a href="http://www.linux.com/news/enterprise/cloud-computing/751156-are-cloud-operating-systems-the-next-big-thing" target="_blank">Linux.com</a> , and a couple of interviews on InfoQ covering <a href="http://www.infoq.com/news/2013/12/mirageos" target="_blank">Mirage</a> and my <a href="http://www.infoq.com/articles/real-world-ocaml-interview" target="_blank">book on OCaml</a> that give more background on the project. Two of the most interesting bits of feedback for me personally...Not-quite-so-broken TLS in OCaml2014-01-01T00:00:00Z2014-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/nqsb-tlsNot-quite-so-broken TLS in OCaml This is an idea proposed in 2014 as a good starter project, and has been completed by <a href="https://github.com/hannesm" target="_blank">Hannes Mehnert</a> and <a href="https://github.com/pqwy" target="_blank">David Kaloper-Mersinjak</a> . It was co-supervised with <a href="https://www.cl.cam.ac.uk/~pes20/" target="_blank">Peter Sewell</a> . 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. This internship was to work on nqsb-TLS, our re-engineered approach to security protocol specification and implementation that addresses...Consolidating Trust for Client Groups that use TLS to Secure Connections2014-01-01T00:00:00Z2014-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/scaling-tls-trustConsolidating Trust for Client Groups that use TLS to Secure Connections This is an idea proposed in 2014 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Johann Beleites</a> . It was co-supervised with <a href="https://anil.recoil.org/" target="_blank">David Sheets</a> . This project aimed to develop a framework that allows administrators to centrally manage trust in CAs and certificates across a large number of clients. The framework should be responsive and changes in trust should not require any software updates or reboots of client devices. Further, no cooperation from CAs or domain owners should be necessary for a security gain. Performance optimisations should be implemented such that it is usable on a daily basis and this project could integrate with other existing attempts at improving the TLS trust model. Related...Reviewing the first year of OCaml Labs in 20132013-12-29T00:00:00Z2013-12-29T00:00:00ZAnilMhttps://anil.recoil.org/notes/the-year-in-ocamllabsThis time last year in 2012, I had just <a href="https://anil.recoil.org/2012/10/19/announcing-ocaml-labs.html" target="_blank">announced</a> the formation of a new group called <a href="http://www.cl.cam.ac.uk/projects/ocamllabs/" target="_blank">OCaml
Labs</a> in the <a href="http://www.cl.cam.ac.uk" target="_blank">Cambridge
Computer Lab</a> that would combine research and community work towards the practical application of functional programming. An incredible year has absolutely flown by, and I’ve put together this post to summarise what’s gone on, and point to our future directions for 2014. The theme of our group was not to be pure research, but rather a hybrid group that would take on some of the load of day-to-day OCaml maintenance from <a href="http://caml.inria.fr" target="_blank">INRIA</a> , as well as help grow the wider OCaml community. To this end, all of our projects have been highly collaborative, often involving colleagues from <a href="http://ocamlpro.com" target="_blank">OCamlPro</a> , <a href="http://gallium.inria.fr/" target="_blank">INRIA</a> , <a href="http://janestreet.com" target="_blank">Jane Street</a> , <a href="http://www.lexifi.com/" target="_blank">Lexifi</a> and <a href="http://citrix.com" target="_blank">Citrix</a> . This post covers progress in <a href="https://anil.recoil.org/#tooling" target="_blank">tooling</a> , the...Using Docker to bulk-build OPAM packages on Linux2013-11-15T00:00:00Z2013-11-15T00:00:00ZAnilMhttps://anil.recoil.org/notes/docker-and-opamNow that OCaml 4.01 has been released, there is a frenzy of commit activity in the <a href="https://github.com/ocaml/ocaml" target="_blank">development trunk</a> of OCaml as the new features for 4.02 are all integrated. These include some enhancements to the type system such as <a href="http://ocaml.org/meetings/ocaml/2013/slides/garrigue.pdf" target="_blank">injectivity</a> , <a href="http://caml.inria.fr/mantis/view.php?id=6063" target="_blank">module aliases</a> and <a href="http://ocaml.org/meetings/ocaml/2013/slides/white.pdf" target="_blank">extension
points</a> as a simpler alternative to syntax extensions. The best way to ensure that these all play well together is to test against the ever-growing OPAM package database as early as possible. While we’re working on more elaborate <a href="https://web.archive.org/web/20181114154831/https://anil.recoil.org/2013/09/30/travis-and-ocaml.html" target="_blank">continuous
building</a> solutions, it’s far easier if a developer can quickly run a bulk build on their own system. The difficulty with doing this is that you also need to install all the external dependencies (e.g. libraries and header files for bindings) needed by the thousands of packages in OPAM. Enter a hip new lightweight container...MirageOS and XAPI project update at XenSummit2013-11-13T00:00:00Z2013-11-13T00:00:00ZAnilMhttps://anil.recoil.org/news/cf9fcf6b-de5d-4a23-a00d-cceadea5b668-1MirageOS and XAPI project update at XenSummitNotes from PL and OS 2013 workshop2013-11-03T00:00:00Z2013-11-03T00:00:00ZAnilMhttps://anil.recoil.org/notes/liveblog-plos-2013I co-chaired the Programming Languages and Operating Systems workshop at SOSP 2013, and made livenotes about the (many) papers presented there.Unikernels: Rise of the Virtual Library Operating System2013-11-01T00:00:00Z2013-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/rise-of-libos-1Article on the Communications of the ACM on unikernels is published <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/djs55" target="_blank">Dave Scott</a> . Journal paper in <a href="https://dl.acm.org/doi/10.1145/2557963.2566628" target="_blank">ACM Queue</a> (vol 11 issue 11). <a href="https://dl.acm.org/doi/10.1145/2557963.2566628" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2557963.2566628" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/rise-of-libos.bib" target="_blank">BIB</a>Trevi: watering down storage hotspots with cool fountain codes2013-11-01T00:00:00Z2013-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2013-hotnets-trevi-1Paper on fountain coding for datacentre networking at HotNets 2013 <a href="http://georgeparisis.github.io" target="_blank">George Parisis</a> , Toby Moncaster , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/2535771.2535781" target="_blank">proceedings of the Twelfth ACM Workshop on Hot Topics in Networks</a> . <a href="https://dl.acm.org/doi/10.1145/2535771.2535781" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2535771.2535781" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2013-hotnets-trevi.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2013-hotnets-trevi.pdf" target="_blank">PDF</a>First edition of Real World OCaml published2013-11-01T00:00:00Z2013-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/rwo-1The 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. <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/yminsky" target="_blank">Yaron Minsky</a> . Book published by <a href="https://www.cambridge.org/core/books/real-world-ocaml-functional-programming-for-the-masses/052E4BCCB09D56A0FE875DD81B1ED571" target="_blank">Cambridge University Press</a> . <a href="https://www.cambridge.org/core/books/real-world-ocaml-functional-programming-for-the-masses/052E4BCCB09D56A0FE875DD81B1ED571" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.1017/9781009129220" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/rwo.bib" target="_blank">BIB</a>Commercial users of functional programming workshop report2013-11-01T00:00:00Z2013-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2012-cufp-scribe-1Published the scribe's report for CUFP 2012 <a href="https://www.deinprogramm.de/sperber/" target="_blank">Michael Sperber</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://www.cambridge.org/core/journals/journal-of-functional-programming/article/commercial-users-of-functional-programming-workshop-report/7B8E5D99E6C0D40D45B37D972B82598D" target="_blank">Journal of Functional Programming</a> (vol 23 issue 6). <a href="https://www.cambridge.org/core/journals/journal-of-functional-programming/article/commercial-users-of-functional-programming-workshop-report/7B8E5D99E6C0D40D45B37D972B82598D" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.1017/S0956796813000257" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2012-cufp-scribe.bib" target="_blank">BIB</a>A 21st Century IDE2013-10-13T01:00:00Z2013-10-13T01:00:00ZRichardMhttps://mort.io/blog/21st-century-ide/I finally decided to sit down and get the shiny new <a href="http://kiwi.iuwt.fr/~asmanur/blog/merlin/" target="_blank">merlin</a> mode for OCaml working with my emacs configuration. Basically, really rather simple in the end although (in the usual fashion!) I did end up spending considerable time tweaking various other customisations… Most of the information below is based on the following sources: <a href="http://github.com/def-lkb/merlin#emacs-interface" target="_blank">http://github.com/def-lkb/merlin#emacs-interface</a> <a href="http://zheng.li/buzzlogs-ocaml/2013/08/23/irc.html" target="_blank">http://zheng.li/buzzlogs-ocaml/2013/08/23/irc.html</a> <a href="http://www.ocamlpro.com/blog/2013/03/18/monthly-03.html" target="_blank">http://www.ocamlpro.com/blog/2013/03/18/monthly-03.html</a> Before we begin, install merlin : $ opam install merlin The complete <a href="https://github.com/mor1/rc-files/commit/4a2b0be59081d6df0640af39b48c75c20443c8dc" target="_blank">commit</a> change is in my <a href="http://github.com/mor1" target="_blank">github</a> account (combined with a large cleanup of various other aborted OCaml configurations). Breaking it down a bit, first setup some paths: where to find ocp-indent , merlin.el for merlin-mode , and the ocamlmerlin command itself. Note that this relies on the current state of opam , so when you start emacs be sure to have...Notes on the first Human Data Interaction workshop2013-10-02T01:00:00Z2013-10-02T01:00:00ZAnilMhttps://anil.recoil.org/notes/hdi-workshop-2013-liveblogWe held the first <a href="https://hdi-network.org" target="_blank">Human Data Interaction</a> workshop over in Cambridge, with lots of discussion about social networks and the state of play with decentralising them.OCaml 2013 workshop liveblog2013-09-24T01:00:00Z2013-09-24T01:00:00ZAnilMhttps://anil.recoil.org/notes/ocaml-2013-liveblogI 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 " <a href="https://anil.recoil.org/notes/the-year-in-ocamllabs" target="_blank">Reviewing the first year of OCaml Labs in 2013</a> " roundup as well that I published later in the year.Liveblogging CUFP 20132013-09-22T01:00:00Z2013-09-22T01:00:00ZAnilMhttps://anil.recoil.org/notes/cufp-2013-liveblogThe <a href="https://cufp.org" target="_blank">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.OPAM 1.1 beta available, with pretty colours2013-09-20T01:00:00Z2013-09-20T01:00:00ZAnilMhttps://anil.recoil.org/notes/opam-1-1-beta<a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> just announced the availability of the <a href="http://opam.ocamlpro.com" target="_blank">OPAM</a> beta release. This has been a huge amount of work for him and <a href="http://louis.gesbert.fr/" target="_blank">Louis</a> , so I’m excited to see this release! Aside from general stability, the main highlights for me are: A switch to the <a href="http://creativecommons.org/publicdomain/zero/1.0/" target="_blank">CC0</a> public-domain-like license for the repository, and LGPL2+linking exception for OPAM itself. The <a href="https://github.com/OCamlPro/opam-repository/issues/955" target="_blank">cutover to the new
license</a> was the first non-gratuitous use of GitHub’s fancy issue lists I’ve seen, too! As part of this, we’re also beginning a transition over to hosting it at opam.ocaml.org , to underline our committment to maintaining it as an OCaml community resource. Much-improved support for package pinning and updates. This is the feature that makes OPAM work well with <a href="http://openmirage.org" target="_blank">MirageOS</a> , since we often need to do development work on a low-level...The OCaml Platform v0.12013-09-01T01:00:00Z2013-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2013-oud-platform-1Paper on the OCaml Platform at the OCaml Workshop 2013 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Amir Chaudhry , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , David Sheets , Phillipe Wang , <a href="https://github.com/lpw25" target="_blank">Leo White</a> and <a href="https://www.cst.cam.ac.uk/people/jdy22" target="_blank">Jeremy Yallop</a> . Paper in the the 2nd ACM OCaml Users and Developers Workshop. <a href="https://anil.recoil.org/papers/2013-oud-platform.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2013-oud-platform.pdf" target="_blank">PDF</a>Ocamlot: Online OCaml Testing2013-09-01T01:00:00Z2013-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2013-ocamlot-1Presented an OCaml ecosystem testing system David Sheets , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Amir Chaudhry and <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> . Paper in the <a href="https://github.com/ocaml/v2.ocaml.org/blob/master/site/meetings/ocaml/2013/proposals/ocamlot.pdf" target="_blank">the 3rd ACM OCaml Users and Developers Workshop</a> . <a href="https://github.com/ocaml/v2.ocaml.org/blob/master/site/meetings/ocaml/2013/proposals/ocamlot.pdf" target="_blank">URL</a> (github.com) <a href="https://anil.recoil.org/papers/2013-ocamlot.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2013-ocamlot.pdf" target="_blank">PDF</a>Lost in the Edge: Finding Your Way with DNSSEC Signposts2013-08-01T01:00:00Z2013-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2013-foci-signposts-1Paper on DNSSEC-based Signpost servers for better p2p communications at USENIX FOCI <a href="https://www.lancaster.ac.uk/scc/about-us/people/charalampos-rotsos" target="_blank">Charalampos Rotsos</a> , Heidi Howard , David Sheets , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Amir Chaudhry and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://www.usenix.org/conference/foci13/workshop-program/presentation/rotsos" target="_blank">3rd USENIX Workshop on Free and Open Communications on the Internet (FOCI 13)</a> . <a href="https://www.usenix.org/conference/foci13/workshop-program/presentation/rotsos" target="_blank">URL</a> (usenix.org) <a href="https://anil.recoil.org/papers/2013-foci-signposts.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2013-foci-signposts.pdf" target="_blank">PDF</a>Mirage Developer Preview 1 screencast2013-07-26T01:00:00Z2013-07-26T01:00:00ZAnilMhttps://anil.recoil.org/news/762795c5-9f3b-499b-a054-b2af37d1ddd2-1Mirage Developer Preview 1 screencastGrepping the source of every OCaml package in OPAM2013-04-08T01:00:00Z2013-04-08T01:00:00ZAnilMhttps://anil.recoil.org/notes/grepping-every-known-ocaml-package-sourceA regular question that comes up from OCaml developers is how to use <a href="http://opam.ocaml.org" target="_blank">OPAM</a> as a hypothesis testing tool against the known corpus of OCaml source code. In other words: can we quickly and simply run grep over every source archive in OPAM? So that’s the topic of today’s 5 minute blog post: git clone git://github.com/ocaml/opam-repository cd opam-repository opam-admin make cd archives for i in *.tar.gz; \ do tar -zxOf $i | grep caml_stat_alloc_string; \ done In this particular example we’re looking for instances of caml_stat_alloc_string , so just replace that with the regular expression of your choice. The opam-admin tool repacks upstream archives into a straightforward tarball, so you don’t need to worry about all the different <a href="http://opam.ocaml.org/doc/Packaging.html#h1-CreatingOPAMpackages#Notes" target="_blank">archival
formats</a> that OPAM supports (such as git or Darcs). It...Unikernels: library operating systems for the cloud2013-03-01T00:00:00Z2013-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2013-asplos-mirage-1The first paper on unikernels is pubished at ASPLOS 2013 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://www.lancaster.ac.uk/scc/about-us/people/charalampos-rotsos" target="_blank">Charalampos Rotsos</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , Balraj Singh , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , <a href="https://github.com/sos22" target="_blank">Steven Smith</a> , <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/2451116.2451167" target="_blank">proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems</a> . <a href="https://dl.acm.org/doi/10.1145/2451116.2451167" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2451116.2451167" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2013-asplos-mirage.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2013-asplos-mirage.pdf" target="_blank">PDF</a>Perceived risks of personal data sharing2013-02-01T00:00:00Z2013-02-01T00:00:00ZAnilMhttps://anil.recoil.org/news/de13-dataware-1Paper on dataware computing in the digital economy Anya Skatova , Jaspreet Johal , Robert Houghton , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , Neelam Bhandari , <a href="https://www.tomlodge.info/cv" target="_blank">Tom Lodge</a> , Christian Wagner , <a href="https://www.nottingham.ac.uk/business/people/psxjog.phtml" target="_blank">James Goulding</a> , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in Digital Economy: Open Digital. <a href="https://anil.recoil.org/papers/de13-dataware.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/de13-dataware.pdf" target="_blank">PDF</a>Concurrent revisions for OCaml2013-01-01T00:00:00Z2013-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/concurrent-revisionsConcurrent revisions for OCaml This is an idea proposed in 2013 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Dimitar Popov</a> . The biggest challenge when using parallel programming is typically how to keep track of the side effects of computations that are executed in parallel and that involve shared mutable state. Traditional methods for dealing with this issue often limit concurrency, do not provide sufficient determinism and are error prone. Ideally, we would like a concept where all conflicts between parallel tasks are resolved deterministically with minimized effort from the programmer. This project aims to design and build a library for OCaml that implements the concept of <a href="https://www.microsoft.com/en-us/research/project/concurrent-revisions/" target="_blank">concurrent
revisions</a> . Concurrent revisions as initially proposed highlight these design...Evolving TCP: how hard can it be?2012-12-01T00:00:00Z2012-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2012-conext-pvtcp-1Paper on extending TCP in a backwards compatible way at CoNeXT 2013 Zubair Nabi , Toby Moncaster , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/2413247.2413270" target="_blank">proceedings of the 2012 ACM conference on CoNEXT student workshop</a> . <a href="https://dl.acm.org/doi/10.1145/2413247.2413270" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2413247.2413270" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2012-conext-pvtcp.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2012-conext-pvtcp.pdf" target="_blank">PDF</a>Announcing OCaml Labs2012-10-19T01:00:00Z2012-10-19T01:00:00ZAnilMhttps://anil.recoil.org/notes/announcing-ocaml-labsI’m very excited to announce <a href="https://anil.recoil.org/projects/ocamllabs" target="_blank">OCaml Labs</a> , the latest project to hit the Cambridge Computer Lab. As anyone that hangs out near me probably realises, I very much enjoy functional programming. My weapon of choice tends to be <a href="http://www.ocaml-lang.org" target="_blank">OCaml</a> , as it condenses <a href="http://events.inf.ed.ac.uk/Milner2012/X_Leroy-html5-mp4.html" target="_blank">decades of
research</a> into a pragmatic blend of functional, imperative and object-oriented programming styles. What’s perhaps less well known are the steady <a href="http://www.ocaml-lang.org/companies.html" target="_blank">inroads</a> that OCaml has been making into mission-critical areas of industry. At <a href="http://ocaml.janestreet.com" target="_blank">Jane
Street</a> , billions of dollars of transactions are routed through a huge ML code-base that is designed to catch bugs <a href="http://vimeo.com/14313378" target="_blank">at compile-time</a> . At <a href="http://github.com/xen-org/xen-api" target="_blank">Citrix</a> , the Xen management toolstack that powers <a href="http://blogs.citrix.com/2012/10/09/one-in-a-million/" target="_blank">millions</a> of hosts in the cloud is <a href="https://anil.recoil.org/papers/2010-icfp-xen.pdf" target="_blank">largely written in
OCaml</a> . Facebook does sophisticated <a href="https://github.com/facebook/pfff/wiki/Main" target="_blank">static
analysis</a> using OCaml over their vast PHP codebase to...Breaking up is easy (with OPAM)2012-10-17T01:00:00Z2012-10-17T01:00:00ZAnilMhttps://anil.recoil.org/notes/breaking-up-mirageosOnce 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 "stub domains" for Xen using MirageOS.OUD 2012: Towards an OCaml Platform and Introducing OCaml Labs2012-09-17T01:00:00Z2012-09-17T01:00:00ZAnilMhttps://anil.recoil.org/news/dd8b1f58-c43c-4422-9963-d3a980529e57-1Recording of the OCaml Labs announcementBuilding a Xenstore stub domain with MirageOS2012-09-12T01:00:00Z2012-09-12T01:00:00ZAnilMhttps://anil.recoil.org/notes/xenstore-stub-domainSignposts: end-to-end networking in a world of middleboxes2012-09-01T01:00:00Z2012-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2012-sigcomm-signposts-1Demoed the Signposts DNSSEC system at SIGCOMM Amir Chaudhry , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://www.lancaster.ac.uk/scc/about-us/people/charalampos-rotsos" target="_blank">Charalampos Rotsos</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , Andrius Aucinas , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> , <a href="https://about.me/sebastianprobsteide" target="_blank">Sebastian Probst Eide</a> , <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> , Andrew W. Moore and Narseo Vallina-Rodriguez . Journal paper in <a href="https://dl.acm.org/doi/10.1145/2377677.2377692" target="_blank">ACM SIGCOMM Computer Communication Review</a> (vol 42 issue 4). <a href="https://dl.acm.org/doi/10.1145/2377677.2377692" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/2377677.2377692" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2012-sigcomm-signposts.bib" target="_blank">BIB</a>Programming the Xen cloud using OCaml2012-09-01T01:00:00Z2012-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2012-oud-xen-1Paper on programming the Xen cloud using OCaml at the OCaml Workshop <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the the 1st ACM OCaml Users and Developers Workshop. <a href="https://anil.recoil.org/papers/2012-oud-xen.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2012-oud-xen.pdf" target="_blank">PDF</a>Exploring Compartmentalisation Hypotheses with SOAAP2012-09-01T01:00:00Z2012-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2012-ahans-soapp-1Paper on control flow analysis to break up applications into compartments <a href="https://www.khilan.com/" target="_blank">Khilan Gudka</a> , <a href="http://www.watson.org/~robert/" target="_blank">Robert M Watson</a> , <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> , <a href="https://en.wikipedia.org/wiki/Ben_Laurie" target="_blank">Ben Laurie</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://ieeexplore.ieee.org/document/6498375/" target="_blank">2012 IEEE Sixth International Conference on Self-Adaptive and Self-Organizing Systems Workshops</a> . <a href="https://ieeexplore.ieee.org/document/6498375/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/SASOW.2012.14" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2012-ahans-soapp.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2012-ahans-soapp.pdf" target="_blank">PDF</a>Cost, Performance & Flexibility in OpenFlow: Pick three2012-06-01T01:00:00Z2012-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2012-iccsdn-mirageflow-1Paper on using MirageOS for better SDN infrastructure with OpenFlow <a href="https://www.lancaster.ac.uk/scc/about-us/people/charalampos-rotsos" target="_blank">Charalampos Rotsos</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Balraj Singh and Andrew W. Moore . Paper in the <a href="https://ieeexplore.ieee.org/document/6364690/" target="_blank">2012 IEEE International Conference on Communications (ICC)</a> . <a href="https://ieeexplore.ieee.org/document/6364690/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/ICC.2012.6364690" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2012-iccsdn-mirageflow.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2012-iccsdn-mirageflow.pdf" target="_blank">PDF</a>Confidential carbon commuting: exploring a privacy-sensitive architecture for incentivising 'greener' commuting2012-04-01T01:00:00Z2012-04-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2012-mpm-caware-1Paper on our use of data lockers within Cambridge to incentivise more green commuting patterns Chris Elsmore , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Ian Leslie and Amir Chaudhry . Paper in the <a href="https://doi.org/10.1145/2181196.2181201" target="_blank">proceedings of the First Workshop on Measurement, Privacy, and Mobility</a> . <a href="https://doi.org/10.1145/2181196.2181201" target="_blank">URL</a> (doi.org) <a href="https://doi.org/10.1145/2181196.2181201" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2012-mpm-caware.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2012-mpm-caware.pdf" target="_blank">PDF</a>The case for reconfigurable I/O channels2012-03-01T00:00:00Z2012-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2012-resolve-fable-1Paper on a new design for reconfigurable IO that copes with heterogenous software/hardware <a href="https://github.com/sos22" target="_blank">Steven Smith</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Christopher Smowton , <a href="https://cs.brown.edu/people/malte/" target="_blank">Malte Schwarzkopf</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="http://www.watson.org/~robert/" target="_blank">Robert M Watson</a> and <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> . Paper in the rESoLVE workshop at ASPLOS. <a href="https://anil.recoil.org/papers/2012-resolve-fable.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2012-resolve-fable.pdf" target="_blank">PDF</a>Dreaming of an ARM OCaml2012-02-25T00:00:00Z2012-02-25T00:00:00ZAnilMhttps://anil.recoil.org/notes/dreamplug-debian-and-ocamlI’ve been meaning to play with <a href="http://www.plugcomputer.org/" target="_blank">Plug
Computers</a> for some time now, as I need a low-power embedded system around the house. I recently bought a <a href="http://soekris.com/products/net6501.html" target="_blank">Soekris
Net6501</a> (a pretty powerful Intel CPU, that even has VT support), but had annoying <a href="http://marc.info/?l=soekris-tech&m=132915532912206&w=2" target="_blank">issues</a> getting it working reliably. I ordered an ARM-based <a href="http://www.newit.co.uk/shop/products.php?cat=21" target="_blank">Dreamplug</a> as an alternative (and as a bonus, the Dreamplug is 6x cheaper than the Soekris!). Here are my notes on getting it to work. __LINK_4__ Requirements: Aside from the Dreamplug itself, make sure you order the optional JTAG module. This provides a serial console that is essential to getting any development done with it. I also grabbed the extra 16GB Class 10 SLC SD Card, to act as my home directory. You will also need another functional system running Debian (or a VM on your Mac; whatever is easiest)....OCaml Labs2012-01-01T00:00:00Z2012-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/ocamllabsOCaml Labs 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. Background In my PhD work on <a href="https://anil.recoil.org/projects/melange" target="_blank">Functional Internet Services</a> in around 2003-2007, I developed high performance and reliable protocol implementations in OCaml. Subsequently from 2010, I worked on <a href="https://anil.recoil.org/projects/perscon" target="_blank">Personal Containers</a> to build high assurance private...Macro- and Micro-benchmarking in OCaml2012-01-01T00:00:00Z2012-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/macro-micro-benchmarkingMacro- and Micro-benchmarking in OCaml This is an idea proposed in 2012 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Sebastian Funk</a> . 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: making performance observations about the program finding a potential hypothesis, i.e. a cause for this performance behaviour making predictions on experiments based on this hypothesis comparing the predictions against the actual benchmark results to evaluate the hypothesis. To be able to do all this, there is a need for an effective and robust framework...CUFP 2011 Workshop Report2012-01-01T00:00:00Z2012-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2011-cufp-scribe-1Published the scribe's report for CUFP 2011 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/yminsky" target="_blank">Yaron Minsky</a> and <a href="https://monkey.org/~marius/" target="_blank">Marius Eriksen</a> . Journal paper in <a href="https://www.cambridge.org/core/journals/journal-of-functional-programming/article/cufp-2011-workshop-report/F22A5B087C6DD9A382D518F6DE08477A" target="_blank">Journal of Functional Programming</a> (vol 22 issue 1). <a href="https://www.cambridge.org/core/journals/journal-of-functional-programming/article/cufp-2011-workshop-report/F22A5B087C6DD9A382D518F6DE08477A" target="_blank">URL</a> (cambridge.org) <a href="https://doi.org/10.1017/S0956796812000020" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2011-cufp-scribe.bib" target="_blank">BIB</a>Analysis of the Raft Consensus Protocol2012-01-01T00:00:00Z2012-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/raft-consensusAnalysis of the Raft Consensus Protocol This is an idea proposed in 2012 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Heidi Howard</a> . The Paxos algorithm, despite being synonymous with distributed consensus for a decade, is famously difficult to reason about and implement due to its non-intuitive approach and underspecification. In response, this project aimed to implement and evaluate a framework for constructing fault-tolerant applications, utilising the recently proposed Raft algorithm for distributed consensus. Constructing a simulation framework for our implementation would enable us to evaluate the protocol on everything from understandability and efficiency to correctness and performance in diverse network environments. In retrospect, the complexity of...OCaml Meeting 2011 - MirageOS2011-10-19T01:00:00Z2011-10-19T01:00:00ZAnilMhttps://anil.recoil.org/news/7d949597-b864-4ada-ab1a-81ff8c0463e2-1At the OCaml Meeting 2011 speaking about MirageOSAn outing to CUFP 2011 for Mirage2011-09-29T01:00:00Z2011-09-29T01:00:00ZAnilMhttps://anil.recoil.org/notes/cufp-2011-mirageWe 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.Extending 64-bit MIPS support for LLVM2011-08-01T01:00:00Z2011-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/mips-llvmExtending 64-bit MIPS support for LLVM This is an idea proposed in 2011 as a good starter project, and has been completed by <a href="https://github.com/wmorland" target="_blank">William Morland</a> . It was co-supervised with <a href="http://www.watson.org/~robert/" target="_blank">Robert M Watson</a> . In the summer of 2011, we hosted <a href="https://github.com/wmorland" target="_blank">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/" target="_blank">CTSRD/CHERI</a> project kicked off. I was interested in MIPS as a potential target for MirageOS, and <a href="http://www.watson.org/~robert/" target="_blank">Robert M Watson</a> in using it for the future CHERI processor. <a href="https://github.com/wmorland" target="_blank">William Morland</a> hacked on the gxemul MIPS simulator, validating (and often creating) the CHERI test suite against the gxemul simulator. He then shifted gears into the (then experimental) 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" target="_blank">GitHub</a> , along with the discussions from back in 2011 on the...Control flow analysis for privilege separation2011-08-01T01:00:00Z2011-08-01T01:00:00ZAnilMhttps://anil.recoil.org/ideas/soapp-privgrindControl flow analysis for privilege separation This is an idea proposed in 2011 as a good starter project, and has been completed by <a href="https://uk.linkedin.com/in/hardingcj" target="_blank">Chris Harding</a> and <a href="https://research.google/people/ross-mcilroy/" target="_blank">Ross McIlroy</a> . It was co-supervised with <a href="http://www.watson.org/~robert/" target="_blank">Robert M Watson</a> . In the summer of 2011, we hosted <a href="https://uk.linkedin.com/in/hardingcj" target="_blank">Chris Harding</a> and <a href="https://research.google/people/ross-mcilroy/" target="_blank">Ross McIlroy</a> to do an internship in the Computer Lab working just as the <a href="https://www.cl.cam.ac.uk/research/security/ctsrd/soaap/" target="_blank">CTSRD/SOAPP</a> project kicked off. <a href="https://research.google/people/ross-mcilroy/" target="_blank">Ross McIlroy</a> built a tool called <a href="https://github.com/rmcilroy/Privgrind" target="_blank">privgrind</a> , using valgrind that tracks, for all data addresses touched, the list of functions that wrote or read from the address and how much they wrote or read. <a href="https://uk.linkedin.com/in/hardingcj" target="_blank">Chris Harding</a> then built a visualiser for this that output the complex control flow graph that results from this as a <a href="https://github.com/chris838/privsep-visualiser" target="_blank">privsep-visualiser</a> which would then form a guideline for future compartmentalisation activities. CFG of OpenBSD's syslogd The results of this work...Dynamics for ML using Meta-Programming2011-07-01T01:00:00Z2011-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2011-dynamics-ml-1Published dyntype at the Workshop on Generative Technologies <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://linkinghub.elsevier.com/retrieve/pii/S1571066111000739" target="_blank">Electronic Notes in Theoretical Computer Science</a> (vol 264 issue 5). <a href="https://linkinghub.elsevier.com/retrieve/pii/S1571066111000739" target="_blank">URL</a> (linkinghub.elsevier.com) <a href="https://doi.org/10.1016/j.entcs.2011.06.002" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2011-dynamics-ml.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2011-dynamics-ml.pdf" target="_blank">PDF</a>Dynamics for ML using Meta-Programming2011-07-01T01:00:00Z2011-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2010-dyntype-wgt-1Paper on statically typed value persistence for OCaml in ENTCS 2011 <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Journal paper in <a href="https://linkinghub.elsevier.com/retrieve/pii/S1571066111000739" target="_blank">Electronic Notes in Theoretical Computer Science</a> (vol 264 issue 5). <a href="https://linkinghub.elsevier.com/retrieve/pii/S1571066111000739" target="_blank">URL</a> (linkinghub.elsevier.com) <a href="https://doi.org/10.1016/J.ENTCS.2011.06.002" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2010-dyntype-wgt.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2010-dyntype-wgt.pdf" target="_blank">PDF</a>Delimited continuations vs Lwt for threads2011-06-18T01:00:00Z2011-06-18T01:00:00ZAnilMhttps://anil.recoil.org/notes/delimited-cont-vs-lwtDataCaml: distributed dataflow programming in OCaml2011-06-11T01:00:00Z2011-06-11T01:00:00ZAnilMhttps://anil.recoil.org/notes/datacaml-with-cielDistributed programming frameworks like <a href="http://wiki.apache.org/hadoop" target="_blank">Hadoop</a> and <a href="http://research.microsoft.com/en-us/projects/dryad/" target="_blank">Dryad</a> are popular for performing computation over large amounts of data. The reason is programmer convenience: they accept a query expressed in a simple form such as <a href="http://wiki.apache.org/hadoop/HadoopMapReduce" target="_blank">MapReduce</a> , and automatically take care of distributing computation to multiple hosts, ensuring the data is available at all nodes that need it, and dealing with host failures and stragglers. A major limitation of Hadoop and Dryad is that they are not well-suited to expressing <a href="http://en.wikipedia.org/wiki/Iterative_method" target="_blank">iterative
algorithms</a> or <a href="http://en.wikipedia.org/wiki/Dynamic_programming" target="_blank">dynamic
programming</a> problems. These are very commonly found patterns in many algorithms, such as <a href="http://en.wikipedia.org/wiki/K-means_clustering" target="_blank">k-means clustering</a> , <a href="http://en.wikipedia.org/wiki/Binomial_options_pricing_model" target="_blank">binomial options
pricing</a> or <a href="http://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm" target="_blank">Smith Waterman</a> for sequence alignment. Over in the SRG in Cambridge, <a href="http://www.cl.cam.ac.uk/research/srg/netos/ciel/who-we-are/" target="_blank">we</a> developed a Turing-powerful distributed execution engine called <a href="http://www.cl.cam.ac.uk/research/srg/netos/ciel/" target="_blank">CIEL</a> that addresses...Reconfigurable Data Processing for Clouds2011-05-01T01:00:00Z2011-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2011-fccm-cloudfpga-1Paper on what a Xen+FPGA cloud would look like at FCCM <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://raintown.org" target="_blank">Satnam Singh</a> . Paper in the <a href="https://ieeexplore.ieee.org/document/5771265/" target="_blank">2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines</a> . <a href="https://ieeexplore.ieee.org/document/5771265/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/FCCM.2011.35" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2011-fccm-cloudfpga.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2011-fccm-cloudfpga.pdf" target="_blank">PDF</a>Functional programming gone wild in the SRG2011-04-18T01:00:00Z2011-04-18T01:00:00ZAnilMhttps://anil.recoil.org/notes/srg-fpWe'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.Camel Spotting in Paris2011-04-15T01:00:00Z2011-04-15T01:00:00ZAnilMhttps://anil.recoil.org/notes/ocaml-users-groupI'm at the <a href="https://forge.ocamlcore.org/plugins/mediawiki/wiki/ocaml-meeting/index.php/OCamlMeeting2011" target="_blank">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" target="_blank">Russia</a> to <a href="http://ashishagarwal.org/about/" target="_blank">New York</a> as well as all the Europeans! Js_of_ocaml First up was <a href="http://www.lsv.ens-cachan.fr/~chambart/" target="_blank">Pierre Chambart</a> talking about the <a href="http://ocsigen.org/js_of_ocaml/" target="_blank">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" target="_blank">ocamljs</a> ) that require patching the compiler tool-chain. Javascript objects are mapped to dynamic OCaml objects via a light-weight ## operator, so you can simply write code like: class type window = object method alert : js_string t -> unit meth method name : js_string t prop end let...CIEL: A universal execution engine for distributed data-flow computing2011-03-01T00:00:00Z2011-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2011-nsdi-ciel-1Paper on CIEL, a distributed dataflow engine, at USENIX NSDI 2011 <a href="https://research.google/people/derekmurray/?&type=google" target="_blank">Derek G Murray</a> , <a href="https://cs.brown.edu/people/malte/" target="_blank">Malte Schwarzkopf</a> , Christopher Smowton , <a href="https://github.com/sos22" target="_blank">Steven Smith</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> . Paper in the <a href="https://www.usenix.org/legacy/event/nsdi11/tech/full_papers/Murray.pdf" target="_blank">8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 11)</a> . <a href="https://www.usenix.org/legacy/event/nsdi11/tech/full_papers/Murray.pdf" target="_blank">URL</a> (usenix.org) <a href="https://anil.recoil.org/papers/2011-nsdi-ciel.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2011-nsdi-ciel.pdf" target="_blank">PDF</a>Unclouded vision2011-01-01T00:00:00Z2011-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2011-icdcn-droplets-1Paper on a vision for a semi-federated cloud for personal data at ICDCN <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://cs.brown.edu/people/malte/" target="_blank">Malte Schwarzkopf</a> , Theodore Hong and <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> . Paper in the proceedings of the 12th International Conference on Distributed Computing and Networking. <a href="https://anil.recoil.org/papers/2011-icdcn-droplets.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2011-icdcn-droplets.pdf" target="_blank">PDF</a>Simulating XMPP Group Communication2011-01-01T00:00:00Z2011-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/xmpp-group-commsSimulating XMPP Group Communication This is an idea proposed in 2011 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://farhanmannan.com" target="_blank">Farhān Mannān</a> . 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. This project aims to build an OCaml-based simulator (using the ocamlgraph...Functional ABNF parser generators2011-01-01T00:00:00Z2011-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/functional-imapFunctional ABNF parser generators This is an idea proposed in 2011 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://github.com/ns476" target="_blank">Nicholas Skehin</a> . Writing internet servers is a difficult proposition. On some levels it seems as though we haven’t made much progress since the 1970s, as popular servers such as Apache and nginx for HTTP, BIND for DNS and qmail for IMAP for many Internet protocols still tend to be written in C. While it is not impossible to write robust software in C, it does tend to be extremely difficult and almost all of the above have suffered from their fair share of security vulnerabilities. With the advent of higher level programming languages, this does not need to be the case any longer. Modern functional languages such as OCaml and Haskell can be competitive...Building the Xen toolstack using OCaml2010-11-05T00:00:00Z2010-11-05T00:00:00ZAnilMhttps://anil.recoil.org/news/43ab3ae0-9ffc-474f-aa02-3cc1139f54d1-1Talk on building the Xen toolstack using OCamlMirage: A New Multi-Scale Operating System for Clouds and Crowds (2014)2010-10-25T01:00:00Z2010-10-25T01:00:00ZAnilMhttps://anil.recoil.org/news/be2f049b-174a-4e5b-b30e-0319793487c7-1At LinkedIn giving tech talk about MirageSelf-hosting MirageOS website2010-10-11T01:00:00Z2010-10-11T01:00:00ZAnilMhttps://anil.recoil.org/notes/mirage-self-hostingI managed to get early <a href="https://mirage.io" target="_blank">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" target="_blank">TCP/IP</a> stack for ages.The personal container, or your life in bits2010-10-01T01:00:00Z2010-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/de10-perscon-1Paper on personal containers for data management at the UK Digital Economy meeting <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="https://www.nottingham.ac.uk/computerscience/people/chris.greenhalgh" target="_blank">Chris Greenhalgh</a> , <a href="https://drdrmc.github.io/about/" target="_blank">Derek McAuley</a> , <a href="https://www.nottingham.ac.uk/psychology/people/alexa.spence" target="_blank">Alexa Spence</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> and <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> . Journal paper in <a href="http://mort.io/publications/pdf/de10-perscon.pdf" target="_blank">Digital Futures</a> (vol 10). <a href="http://mort.io/publications/pdf/de10-perscon.pdf" target="_blank">URL</a> (mort.io) <a href="https://anil.recoil.org/papers/de10-perscon.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/de10-perscon.pdf" target="_blank">PDF</a>Using functional programming within an industrial product group: perspectives and perceptions2010-09-01T01:00:00Z2010-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2010-icfp-xen-1Paper on our experiences with writing the Xen control stack in OCaml at ICFP 2010 <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="https://dl.acm.org/doi/10.1145/1863543.1863557" target="_blank">proceedings of the 15th ACM SIGPLAN international conference on Functional programming</a> . <a href="https://dl.acm.org/doi/10.1145/1863543.1863557" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/1863543.1863557" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2010-icfp-xen.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2010-icfp-xen.pdf" target="_blank">PDF</a>Turning Down the LAMP: Software Specialisation for the Cloud2010-06-22T01:00:00Z2010-06-22T01:00:00ZAnilMhttps://anil.recoil.org/news/4957325f-d7f5-4a29-95b6-a1e1f61ea5cf-1At HotCloud for the first talk about MirageOSTurning Down the LAMP: Software Specialisation for the Cloud2010-06-01T01:00:00Z2010-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2010-hotcloud-lamp-1Workshop paper on the early MirageOS architecture and evaluation at HotCloud 2010 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="mailto:ripduman.sohan@gmail.com" target="_blank">Ripduman Sohan</a> , <a href="https://github.com/samoht" target="_blank">Thomas Gazagnaire</a> , <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> , <a href="mailto:tjd@phlegethon.org" target="_blank">Tim Deegan</a> , <a href="https://drdrmc.github.io/about/" target="_blank">Derek McAuley</a> and <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> . Paper in the <a href="https://www.usenix.org/conference/hotcloud-10/turning-down-lamp-software-specialisation-cloud" target="_blank">2nd USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 10)</a> . <a href="https://www.usenix.org/conference/hotcloud-10/turning-down-lamp-software-specialisation-cloud" target="_blank">URL</a> (usenix.org) <a href="https://anil.recoil.org/papers/2010-hotcloud-lamp.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2010-hotcloud-lamp.pdf" target="_blank">PDF</a>Creating high-performance, statically type-safe network applications2010-05-01T01:00:00Z2010-05-01T01:00:00ZAnilMhttps://anil.recoil.org/news/anil-phd-thesis-2My PhD thesis is now also published as a print book <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Technical report (UCAM-CL-TR-775) at <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-775.pdf" target="_blank">University of Cambridge, Computer Laboratory</a> . <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-775.pdf" target="_blank">URL</a> (cl.cam.ac.uk) <a href="https://doi.org/10.48456/tr-775" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/anil-phd-thesis.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/anil-phd-thesis.pdf" target="_blank">PDF</a>Yurts for Digital Nomads2010-04-29T01:00:00Z2010-04-29T01:00:00ZAnilMhttps://anil.recoil.org/notes/yurts-for-digital-nomadsThe 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" target="_blank">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/" target="_blank">iPhone</a> or Find My iPhone <a href="http://github.com/avsm/perscon/blob/master/appengine/perscon/drivers/fmi.py" target="_blank">GPS traces</a> traces, it doesn’t work so well with my gigabytes of photographs or decades of e-mail. This confirmed our earlier intuition that there is no one perfect solution for personal data handling; instead, we need to embrace diversity and construct an infrastructure that can cope with change over the coming decades. Mobile...Pulling together a user interface2010-04-15T01:00:00Z2010-04-15T01:00:00ZAnilMhttps://anil.recoil.org/notes/uiprototypeWe’ve been <a href="http://github.com/avsm/perscon" target="_blank">hacking</a> away on fleshing out the <a href="http://code.google.com/appengine" target="_blank">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/" target="_blank">extjs</a> . 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...Multiscale not multicore: efficient heterogeneous cloud computing2010-04-01T01:00:00Z2010-04-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2010-bcs-visions-1Paper on our vision for multiscale programming at the BCS Visions 2010 conference <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/mor1" target="_blank">Richard Mortier</a> , <a href="mailto:jon.crowcroft@cl.cam.ac.uk" target="_blank">Jon Crowcroft</a> and <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> . Paper in the <a href="https://dl.acm.org/doi/10.5555/1811182.1811191" target="_blank">proceedings of the 2010 ACM-BCS Visions of Computer Science Conference</a> . <a href="https://dl.acm.org/doi/10.5555/1811182.1811191" target="_blank">URL</a> (dl.acm.org) <a href="https://anil.recoil.org/papers/2010-bcs-visions.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2010-bcs-visions.pdf" target="_blank">PDF</a>Opening a website2010-03-29T01:00:00Z2010-03-29T01:00:00ZAnilMhttps://anil.recoil.org/notes/opening-a-websiteWe've been working away at building a new type of database to help individuals keep reigns on their ever-increasing personal digital information. The first prototypes run freely on <a href="https://web.archive.org/web/20110509135538/http://code.google.com/appengine" target="_blank">Google App Engine</a> to gather your data behind-the-scenes, and we are working on more advanced versions that run on embedded devices and the cloud. If you’re interested in keeping track of your personal data, you can start off with the <a href="https://web.archive.org/web/20110509135538/http://perscon.net/install.html" target="_blank">installation</a> instructions to clone your own version. After that, read up on the <a href="https://web.archive.org/web/20110509135538/http://perscon.net/design.html" target="_blank">design</a> of the system (which is still changing as we research new ideas around it). When you find something you want to fix, or add a new plugin data source, just clone the <a href="https://github.com/avsm/perscon" target="_blank">code</a> and send us back fixes!Privacy Butler: A Personal Privacy Rights Manager for Online Presence2010-03-01T00:00:00Z2010-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2010-smarte-privacybutler-1Paper on privacy butler services for more private data management Ryan Wishart , Domenico Corapi and Morris Sloman . Paper in the <a href="https://ieeexplore.ieee.org/document/5470519" target="_blank">2010 8th IEEE International Conference on Pervasive Computing and Communications Workshops (PERCOM Workshops)</a> . <a href="https://ieeexplore.ieee.org/document/5470519" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/PERCOMW.2010.5470519" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2010-smarte-privacybutler.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2010-smarte-privacybutler.pdf" target="_blank">PDF</a>Creating high-performance, statically type-safe network applications2010-03-01T00:00:00Z2010-03-01T00:00:00ZAnilMhttps://anil.recoil.org/news/anil-phd-thesis-1PhD thesis now available as a technical report <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Technical report (UCAM-CL-TR-775) at <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-775.pdf" target="_blank">University of Cambridge, Computer Laboratory</a> . <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-775.pdf" target="_blank">URL</a> (cl.cam.ac.uk) <a href="https://doi.org/10.48456/tr-775" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/anil-phd-thesis.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/anil-phd-thesis.pdf" target="_blank">PDF</a>Unikernels2010-01-01T00:00:00Z2010-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/unikernelsUnikernels I proposed the concept of "unikernels" -- 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. While working on <a href="https://anil.recoil.org/projects/perscon" target="_blank">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...Functional Reactive Web Applications2010-01-01T00:00:00Z2010-01-01T00:00:00ZAnilMhttps://anil.recoil.org/ideas/frp-web-ocamlFunctional Reactive Web Applications This is an idea proposed in 2010 as a Cambridge Computer Science Part II project, and has been completed by <a href="https://anil.recoil.org/" target="_blank">Henry Hughes</a> . There are a variety of programming languages which can be used to create desktop applications, and each provides different tradeoffs. This could be anything from the runtime guarantees the programming language provides to rapid development and prototyping. It does not make much difference to the user which of these languages was used, as all they want to do is run their favourite application reliably. When writing an application for the web, however, the programmer is forced to use a specific set of APIs that come under the umbrella term AJAX (Asynchronous JavaScript and XML). AJAX involves writing client-side code in JavaScript and...Combining Static Model Checking with Dynamic Enforcement Using the Statecall Policy Language2009-11-01T00:00:00Z2009-11-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2009-icfem-spl-1Paper on a DSL for specifying temporal protocol automata at ICFEM 2009 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Paper in the <a href="http://link.springer.com/10.1007/978-3-642-10373-5_23" target="_blank">formal Methods and Software Engineering</a> . <a href="http://link.springer.com/10.1007/978-3-642-10373-5_23" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/978-3-642-10373-5_23" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2009-icfem-spl.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2009-icfem-spl.pdf" target="_blank">PDF</a>Personal Containers2009-01-01T00:00:00Z2009-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/persconPersonal Containers 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. I've had a passion for self-hosted, decentralised computing for many years since <a href="https://nick.recoil.org" target="_blank">Nick Ludlam</a> and I set up the recoil.org collective in the late 90s. In late 2008, I'd been working on early cloud computing as part of the <a href="https://anil.recoil.org/projects/xen" target="_blank">Xen Hypervisor</a> project and already seeing the rapid rise of centralised data...Peeking under the hood of High Availability2008-09-17T01:00:00Z2008-09-17T01:00:00ZAnilMhttps://anil.recoil.org/notes/peeking-under-the-hood-of-high-availabilityWell, the big launch of <a href="http://www.xenserver5.com/" target="_blank">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" target="_blank">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. Fundamentally, HA is about making sure important VMs are always running on a resource pool. There are two aspects to this: reliably detecting host failure , and computing a failure plan to deal with swift recovery. 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...Shedding light on XenApp on XenServer performance tuning2008-08-04T01:00:00Z2008-08-04T01:00:00ZAnilMhttps://anil.recoil.org/notes/shedding-some-light-on-xenapp-on-xenserver-performance-tuningYou won’t be surprised to hear that we spend a lot of time improving <a href="http://www.citrix.com/XenApp" target="_blank">XenApp</a> performance when running on <a href="http://www.citrix.com/XenServer" target="_blank">XenServer</a> . Although there are some good benchmark comparisons available (such as the <a href="http://community.citrix.com/x/_4ENAg" target="_blank">Tolly
Group</a> report), I still get a lot of customers asking about what the “secret sauce” is. I sat down with George Dunlap, the lead XenServer performance engineer to chat about the very first optimisation we did back in XenServer 4.0 last year. Before we dive in, we first need to explain how a normal operating system handles memory. George explains: Modern desktop and server processors don’t access memory directly using its physical address. They use ‘ <a href="http://en.wikipedia.org/Virtual_Memory" target="_blank">virtual
memory</a> ’ to separate the addresses that processes use to read and write memory from the actual memory itself. This allows operating systems to...Installing Ubuntu on XenServer2008-07-02T01:00:00Z2008-07-02T01:00:00ZAnilMhttps://anil.recoil.org/notes/installing-ubuntu-on-xenserverI thought I’d kick off my Citrix blog with a question I get pretty often from Linux enthusiasts: how to install unsupported Linux distributions on <a href="https://xenserver.com" target="_blank">XenServer</a> 4.1. The most common solution people find is to use the "Other Install Media" template, insert the distribution installation CD, and find that the mouse cursor doesn’t work when they boot into X11. The reason for this is that they are using the hardware-assisted emulation mode of installing Linux. In this mode (dubbed “HVM”), all input and output is emulated, and in particular the mouse interface uses the USB tablet interface. If the distribution doesn’t include a driver for USB tablets, then no mouse will appear. Windows guests run at high-speed in HVM mode due to the installation of the XenServer tools which install <a href="http://xen.org/files/summit_3/xen-pv-drivers.pdf" target="_blank">high-speed
drivers</a> ,...Enhancing web browsing security on public terminals using mobile composition2008-06-01T01:00:00Z2008-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2008-mobisys-splittrust-1Paper on splitting trust between smartphones and webrowsers at MobiSys 2008 <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Roy Want and Trevor Pering . Paper in the <a href="https://dl.acm.org/doi/10.1145/1378600.1378612" target="_blank">proceedings of the 6th international conference on Mobile systems, applications, and services</a> . <a href="https://dl.acm.org/doi/10.1145/1378600.1378612" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/1378600.1378612" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2008-mobisys-splittrust.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2008-mobisys-splittrust.pdf" target="_blank">PDF</a>Melange: creating a "functional" internet2007-06-01T01:00:00Z2007-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2007-eurosys-melange-1Won best student paper for my PhD work on a high-performance functional packet parsing DSL at Eurosys 2007! <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://hoiho.net" target="_blank">Alex Ho</a> , <a href="mailto:tjd@phlegethon.org" target="_blank">Tim Deegan</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> and <a href="mailto:ripduman.sohan@gmail.com" target="_blank">Ripduman Sohan</a> . Journal paper in <a href="https://dl.acm.org/doi/10.1145/1272998.1273009" target="_blank">ACM SIGOPS Operating Systems Review</a> (vol 41 issue 3). <a href="https://dl.acm.org/doi/10.1145/1272998.1273009" target="_blank">URL</a> (dl.acm.org) <a href="https://doi.org/10.1145/1272998.1273009" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2007-eurosys-melange.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2007-eurosys-melange.pdf" target="_blank">PDF</a>Interacting with mobile services: an evaluation of camera-phones and visual tags2007-02-01T00:00:00Z2007-02-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2006-puc-tags-1Journal paper on interacting with mobile services using camera-phones <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , <a href="mailto:eben@phlegethon.org" target="_blank">Eben Upton</a> and <a href="mailto:alan.blackwell@cl.cam.ac.uk" target="_blank">Alan Blackwell</a> . Journal paper in <a href="https://doi.org/10.1007/s00779-006-0064-9" target="_blank">Personal and Ubiquitous Computing</a> (vol 11 issue 2). <a href="https://doi.org/10.1007/s00779-006-0064-9" target="_blank">URL</a> (doi.org) <a href="https://doi.org/10.1007/s00779-006-0064-9" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2006-puc-tags.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2006-puc-tags.pdf" target="_blank">PDF</a>Fighting Crimeware: An Architecture for Split-Trust Web Applications2006-04-01T01:00:00Z2006-04-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2006-fighting-crimeware-1New paper <a href="https://anil.recoil.org/papers/2006-fighting-crimeware" target="_blank">Fighting Crimeware: An Architecture for Split-Trust Web Applications</a> available <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Roy Want , Trevor Pering and <a href="https://ieeexplore.ieee.org/author/37549829000" target="_blank">John Light</a> . Technical report (IRC-TR-06-053) at Intel Research. <a href="https://anil.recoil.org/papers/2006-fighting-crimeware.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2006-fighting-crimeware.pdf" target="_blank">PDF</a>SPLAT: A Tool for Model-Checking and Dynamically-Enforcing Abstractions2005-08-01T01:00:00Z2005-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2005-spin-splat-1Workshop paper on temporal automata for protocol specifications at SPIN 2005 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> and <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> . Paper in the <a href="http://link.springer.com/10.1007/11537328_23" target="_blank">model Checking Software</a> . <a href="http://link.springer.com/10.1007/11537328_23" target="_blank">URL</a> (link.springer.com) <a href="https://doi.org/10.1007/11537328_23" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2005-spin-splat.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-spin-splat.pdf" target="_blank">PDF</a>Ubiquitious Computing needs to catch up with Ubiquitous Media2005-07-01T01:00:00Z2005-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2005-ubiapp-ubimedia-1Position paper on ubiquitous computing approaches to emerging stream media appliances <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> and Kasim Rehman . Journal paper in <a href="https://ieeexplore.ieee.org/document/1495397/" target="_blank">IEEE Pervasive Computing</a> (vol 4 issue 3). <a href="https://ieeexplore.ieee.org/document/1495397/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/MPRV.2005.69" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2005-ubiapp-ubimedia.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-ubiapp-ubimedia.pdf" target="_blank">PDF</a>Audio networking: the forgotten wireless technology2005-07-01T01:00:00Z2005-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2005-ieee-audio-1New paper <a href="https://anil.recoil.org/papers/2005-ieee-audio" target="_blank">Audio networking: the forgotten wireless technology</a> available <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> and <a href="https://liquidx.net" target="_blank">Alastair Tse</a> . Journal paper in <a href="https://ieeexplore.ieee.org/document/1495392/" target="_blank">IEEE Pervasive Computing</a> (vol 4 issue 3). <a href="https://ieeexplore.ieee.org/document/1495392/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/MPRV.2005.50" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2005-ieee-audio.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-ieee-audio.pdf" target="_blank">PDF</a>A Study of Bluetooth Propagation Using Accurate Indoor Location Mapping2005-07-01T01:00:00Z2005-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2005-ubicomp-bluetooth-1Ubicomp paper on a study of indoor bluetooth propagation using the Active Bat system <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://liquidx.net" target="_blank">Alastair Tse</a> . Paper in the ubiComp 2005: Ubiquitous Computing. <a href="https://doi.org/10.1007/11551201_7" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2005-ubicomp-bluetooth.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-ubicomp-bluetooth.pdf" target="_blank">PDF</a>OpenBSD C2K5 thoughts2005-06-04T01:00:00Z2005-06-04T01:00:00ZAnilMhttps://anil.recoil.org/notes/c2k5-thoughtsFinally had some time to get back from the OpenBSD hackathon and take stock of what I worked on. It was pretty interesting one this year, as I went without having much idea of what to work on (unlike last year, when I had a mad backlog to catch up on). Some stuff I did during the week included: Clean up the <a href="http://www.openbsd.org/cgi-bin/cvsweb.cgi/src/usr.bin/ssh/atomicio.c" target="_blank">atomicio</a> interface used in <a href="http://www.openssh.com" target="_blank">OpenSSH</a> and <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=nc" target="_blank">nc(1)</a> to provide simpler semantics. Error checking from read/write functions are a real headache in C, as the functions return -1 on error, which means a signed ssize_t is returned. However, they accept an unsigned value as the size of the buffer to process, which means they could potentially return a value outside the range of the return value. This means you have to check if the return is -1 , which indicates an error, and otherwise...On the challenge of delivering high-performance, dependable, model-checked internet servers2005-06-01T01:00:00Z2005-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2005-hotdep-spl-1Paper on temporal automata for protocol implementations at HotDep 2005 <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/djs55" target="_blank">Dave Scott</a> . Paper in the <a href="https://dl.acm.org/doi/10.5555/1973400.1973406" target="_blank">proceedings of the First Conference on Hot Topics in System Dependability</a> . <a href="https://dl.acm.org/doi/10.5555/1973400.1973406" target="_blank">URL</a> (dl.acm.org) <a href="https://anil.recoil.org/papers/2005-hotdep-spl.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-hotdep-spl.pdf" target="_blank">PDF</a>Using visual tags to bypass Bluetooth device discovery2005-01-01T00:00:00Z2005-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2005-mc2r-visualtags-1While designing <a href="https://anil.recoil.org/projects/ubiqinteraction" target="_blank">Spotcodes</a> , we realised that visual tags are a much better mechanism to advertise security keys to users instead of the error prone and much more difficult to use Bluetooth device discovery protocol. We duly implemented the direct system, and conducted a user study with <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> who was down the corridor working with the HCI group in the Computer Lab. The resulting journal paper on our SpotCode visual tag login system is a fun blend of systems and human factors. We do not believe that printed tags are competing with RFID and NFC for the prize of "universally accepted connection establishment technology". Instead we observe that each offers complementary tradeoffs in terms of cost, data capacity, interaction distance, client-device compatibility and visibility. We...Using smart phones to access site-specific services2005-01-01T00:00:00Z2005-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2005-ieee-smartphones-1Article on using cameraphones to access site-specific services in IEEE Pervasive Computing <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://github.com/djs55" target="_blank">Dave Scott</a> . Journal paper in <a href="https://ieeexplore.ieee.org/document/1427650/" target="_blank">IEEE Pervasive Computing</a> (vol 4 issue 2). <a href="https://ieeexplore.ieee.org/document/1427650/" target="_blank">URL</a> (ieeexplore.ieee.org) <a href="https://doi.org/10.1109/MPRV.2005.44" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2005-ieee-smartphones.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-ieee-smartphones.pdf" target="_blank">PDF</a>The Broadband Phone Network: Experiences with Context-Aware Telephony2005-01-01T00:00:00Z2005-01-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2005-bbphone-1Report on our hacking on the AT&T Broadband Phone <a href="mailto:ripduman.sohan@gmail.com" target="_blank">Ripduman Sohan</a> , <a href="https://liquidx.net" target="_blank">Alastair Tse</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Technical report (CUED/F INFENG/TR.533) at <a href="https://cam-orl.co.uk/bphone/" target="_blank">Cambridge University Engineering Department</a> . <a href="https://cam-orl.co.uk/bphone/" target="_blank">URL</a> (cam-orl.co.uk) <a href="https://anil.recoil.org/papers/2005-bbphone.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2005-bbphone.pdf" target="_blank">PDF</a>Using camera-phones to interact with context-aware mobile services2004-12-01T00:00:00Z2004-12-01T00:00:00ZAnilMhttps://anil.recoil.org/news/2004-spotcodes-1A technical report is now available on our SpotCode visual tag system, and includes a user study lead by <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> which tested its benefits against conventional mobile interfaces. <a href="https://www.cst.cam.ac.uk/people/eft20" target="_blank">Eleanor Toye Scott</a> , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , <a href="mailto:alan.blackwell@cl.cam.ac.uk" target="_blank">Alan Blackwell</a> and <a href="mailto:eben@phlegethon.org" target="_blank">Eben Upton</a> . Technical report (UCAM-CL-TR-609) at <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-609.html" target="_blank">University of Cambridge, Computer Laboratory</a> . <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-609.html" target="_blank">URL</a> (cl.cam.ac.uk) <a href="https://doi.org/10.48456/tr-609" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/2004-spotcodes.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2004-spotcodes.pdf" target="_blank">PDF</a>Connecting Paper and Online Worlds by Cellphone2004-10-07T01:00:00Z2004-10-07T01:00:00ZAnilMhttps://anil.recoil.org/notes/spotcodes-nytimesIn what is definitely our most exciting media coverage yet, <a href="https://anil.recoil.org/projects/ubiqinteraction" target="_blank">Spotcodes</a> are featured in the New York Times! 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. -- <a href="https://www.nytimes.com/2004/10/07/technology/circuits/connecting-paper-and-online-worlds-by-cellphone-camera.html" target="_blank">New York Times</a> <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> got cited as I wasn't in the department that day when the journalist showed up at Intel Research! "Instead of having all the hassle of putting things out in the...Using Camera-Phones to Enhance Human-Computer Interaction2004-09-01T01:00:00Z2004-09-01T01:00:00ZAnilMhttps://anil.recoil.org/news/2004-ubicomp-camera-1We gave a demo at <a href="https://www.ubicomp.org/ubicomp2004/" target="_blank">UbiComp 2004</a> all the way in Tokyo on our SpotCode visual tag system. It went very well, including some time to do some sightseeing in Japan and visit the sumo wrestling championships! <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , <a href="https://github.com/djs55" target="_blank">Dave Scott</a> , <a href="mailto:richard.sharp@gmail.com" target="_blank">Richard Sharp</a> and <a href="mailto:eben@phlegethon.org" target="_blank">Eben Upton</a> . Paper in the <a href="https://ubicomp.org/ubicomp2004/adjunct/demos/madhavapeddy.pdf" target="_blank">adjunct Proceedings of Ubicomp 2004 (Demo Track)</a> . <a href="https://ubicomp.org/ubicomp2004/adjunct/demos/madhavapeddy.pdf" target="_blank">URL</a> (ubicomp.org) <a href="https://anil.recoil.org/papers/2004-ubicomp-camera.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/2004-ubicomp-camera.pdf" target="_blank">PDF</a>MIT Technology review covers SpotCodes2004-09-01T01:00:00Z2004-09-01T01:00:00ZAnilMhttps://anil.recoil.org/notes/mit-spotcodesWe got more coverage of <a href="https://en.wikipedia.org/wiki/ShotCode" target="_blank">SpotCodes</a> and our startup <a href="https://anil.recoil.org/projects/ubiqinteraction" target="_blank">High Energy Magic</a> , leading to lots of interest in the technology. 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...Exploring tradeoffs in location-aware gaming using smartphones2004-08-01T01:00:00Z2004-08-01T01:00:00ZAnilMhttps://anil.recoil.org/news/netgames04-ctf-1The summer of 2004 was sufficient full of procrastination that the members of the <a href="https://web.archive.org/web/20041212123550/http://sn17.org/" target="_blank">SN17 collective</a> in the Computer Lab decided to build a computer game. But it wasn't enough to just play the game on our phones -- instead, we combined all the public displays in the corridors, and then added in a cutting-edge 5cm-accurate <a href="https://en.wikipedia.org/wiki/Active_Bat" target="_blank">ActiveBAT</a> , and built a Symbian-based Capture The Flag game where we all had to run around and tag each other physically while tracking the flag virtually. Was it mad? Yes. Was it fun? Yes. Did it get us a paper into the SIGCOMM NetGames workshop? Yes! Our novel contributions include: (i) creating a fast-paced, close quarters, location-aware game, (ii) exploring the tradeoffs between the accuracy of a location system, the I/O capabilities of current mobile hardware, and the...From the prawn of time2004-06-07T01:00:00Z2004-06-07T01:00:00ZAnilMhttps://anil.recoil.org/notes/wired-spotcodeI gave a talk at <a href="https://web.archive.org/web/20050204012820/http://www.quernstone.com/notcon04/" target="_blank">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/" target="_blank">via a prawn sandwich</a> , so the limelight wasn't all just mine... 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. -- <a href="https://roxannekhamsi.com" target="_blank">Roxanne Khamsi</a> for <a href="https://www.wired.com/2004/06/from-the-prawn-of-time/" target="_blank">Wired</a>Cellphone as a virtual mouse/keyboard2004-05-27T01:00:00Z2004-05-27T01:00:00ZAnilMhttps://anil.recoil.org/notes/hemThe <a href="https://anil.recoil.org/projects/ubiqinteraction" target="_blank">SpotCode</a> cellphone software was spun out into a startup called High Energy Magic Ltd, and was covered on Slashdot. 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. There were also articles on <a href="https://web.archive.org/web/20060505171702/http://www.linuxdevices.com/news/NS3157166681.html" target="_blank">DeviceForge</a> that were picked up by quite a few outlets. Update: You can see some of the videos under <a href="https://anil.recoil.org/projects/ubiqinteraction" target="_blank">Ubiquitous Interaction Devices</a> as well.Context-Aware Computing with Sound2003-10-01T01:00:00Z2003-10-01T01:00:00ZAnilMhttps://anil.recoil.org/news/audio-networking-1While working as an intern at Intel Research Cambridge, <a href="https://github.com/djs55" target="_blank">Dave Scott</a> and <a href="mailto:richard.sharp@gmail.com" target="_blank">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 [...] 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...My static C bounds checker extension merged into OpenBSD2003-06-27T01:00:00Z2003-06-27T01:00:00ZAnilMhttps://anil.recoil.org/notes/gcc-boundsAfter many rounds of review and helpful feedback from fellow developers, I merged my <a href="https://man.openbsd.org/gcc-local.1" target="_blank">GCC static bounds checking extension</a> into OpenBSD today! Introduce a simple static checker for making sure that the bounds length passed to common functions such as strlcpy/strlcat match the real length of the buffer. It also checks to make sure that the bound length was not incorrectly derived from a sizeof(pointer) operation. Functions must be marked with the new attribute bounded , and warnings are turned on by -Wbounded. Specifying -Wformat also enables bounds checking for scanf(3) bounds to '%s' format variables. -Wall now turns on -Wbounded also. The checking is pretty limited right now to constant parameters, and the buffers must be statically declared, and not inside a record type. This simple checking still found hundreds...The Case for Abstracting Security Policies2003-06-01T01:00:00Z2003-06-01T01:00:00ZAnilMhttps://anil.recoil.org/news/sam03-secpol-1My first ever academic paper, written with the expert guidance of <a href="https://www.cl.cam.ac.uk/~am21/" target="_blank">Alan Mycroft</a> and my PhD colleagues <a href="https://github.com/djs55" target="_blank">Dave Scott</a> and <a href="mailto:richard.sharp@gmail.com" target="_blank">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" target="_blank">systrace</a> . The paper describing the declarative language was presented at SAM 2003 in Las Vegas. "Untrusted code" is just as much a social problem as it is a technical problem. Looking for a complete solution is unrealistic: it is analogous to looking for a solution to crime in general. With this in mind, we do not claim that our proposed framework is a panacea. However, although a number of security problems remain (e.g. covert channel leakage), we claim that our system offers the potential to raise the security level of...Moving to anil.recoil.org2003-05-16T01:00:00Z2003-05-16T01:00:00ZAnilMhttps://anil.recoil.org/notes/opening-anil-recoil-orgI've taken the opportunity to redesign my homepage and switch to its hopefully-permanent URL on anil.recoil.org . Many thanks to Jon Parise for giving me permission to base my HTML upon his homepage's, saving me lots of design trouble!Xen 20022003-01-04T00:00:00Z2003-01-04T00:00:00ZAnilMhttps://anil.recoil.org/news/xen02-1The first technical report on the <a href="https://anil.recoil.org/projects/xen" target="_blank">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). Paul R. Barham , Boris Dragovic , Keir Fraser , <a href="https://research.google/people/steven-hand/" target="_blank">Steven Hand</a> , <a href="https://timharris.uk/" target="_blank">Tim Harris</a> , <a href="https://hoiho.net" target="_blank">Alex Ho</a> , Evangelos Kotsovinos , <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> , Rolf Neugebauer , Ian Pratt and Andrew Warfield . Technical report (UCAM-CL-TR-553) at <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-553.pdf" target="_blank">University of Cambridge, Computer Laboratory</a> . <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-553.pdf" target="_blank">URL</a> (cl.cam.ac.uk) <a href="https://doi.org/10.48456/tr-553" target="_blank">DOI</a> <a href="https://anil.recoil.org/papers/xen02.bib" target="_blank">BIB</a>Ubiquitous Interaction Devices2003-01-01T00:00:00Z2003-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/ubiqinteractionUbiquitous Interaction Devices I investigated how to interface the new emerging class of smartphone devices (circa 2002) with concepts from ubiquitous computing such as location-aware interfaces or context-aware computing. I discovered the surprisingly positive benefits of piggybacking on simple communications medium such as audible sound and visual tags. Our implementations of some of these ended up with new audio ringtone and visual smart tags that worked on the widely deployed mobile phones of the era. In 2003, the mobile phone market had grown tremendously and given the average consumer access to cheap, small, low-powered and constantly networked devices that they could reliably carry around. Similarly, laptop computers and PDAs became a common accessory for businesses to equip their...Functional Internet Services2003-01-01T00:00:00Z2003-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/melangeFunctional Internet Services 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 "rewrite all the things in OCaml from C!", 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. In the late 90s while working at MVACS on the Mars Polar Lander, I found myself using the secure OpenBSD operating system to deploy the self-hosted service that @nickludlam and I have run together ever since. I became an OpenBSD developer with...Started PhD at Cambridge2002-09-01T01:00:00Z2002-09-01T01:00:00ZAnilMhttps://anil.recoil.org/notes/starting-phdI started my PhD at the Systems Research Group in Cambridge this week, based in the <a href="https://www.cl.cam.ac.uk" target="_blank">Computer Laboratory</a> and <a href="https://robinson.cam.ac.uk" target="_blank">Robinson
College</a> . I'll still be working part-time at <a href="https://netapp.com" target="_blank">NetApp</a> , but my primary focus will be on the <a href="https://anil.recoil.org/projects/xen" target="_blank">Xen</a> hypervisor and other systems research topics.Streamlining PHP on OpenBSD2002-06-24T01:00:00Z2002-06-24T01:00:00ZAnilMhttps://anil.recoil.org/notes/php-port-layout-openbsdI'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 "multi packages". The first thing I did was to import the core PHP without any extensions. commit 15dc0f67ef5fd0cae9fb841e608b90b9f51c71ca Author: avsm <avsm@openbsd.org> Date: Mon Jun 24 19:23:41 2002 +0000 Import php4-core-4.2.1 Installs the barebones php4 with only the gettext, iconv and recode modules compiled in. All of the other modules have to be installed as shared modules on top of this. In addition to the Apache module, this package also includes a php command-line binary which can be used in shell scripts. The binary uses the same /var/www/conf/php.ini file as the Apache module. There is some non-i386 breakage at the moment...Streaming U2 live across the Internet2002-04-01T01:00:00Z2002-04-01T01:00:00ZAnilMhttps://anil.recoil.org/news/netapp-tr-3152-1After the <a href="https://anil.recoil.org/notes/mars-polar-lander" target="_blank">Mars Polar Lander crashed</a> , I took a job at NetApp working as the product architect for <a href="https://en.wikipedia.org/wiki/NetCache" target="_blank">NetCache</a> . Among the hundreds of deployments that I help setup across the world, the most fun was figuring out how to scale one of the biggest bands in the world at the time wanting to stream their concert live to a global audience. [… <a href="https://anil.recoil.org/news/netapp-tr-3152-1" target="_blank">158 words</a> ] <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> and <a href="https://www.linkedin.com/in/alberto-crivelli-459209" target="_blank">Alberto Crivelli</a> . Technical report (TR-3152) at <a href="http://tr.netapp.link/tr-3152.pdf" target="_blank">NetApp</a> . <a href="http://tr.netapp.link/tr-3152.pdf" target="_blank">URL</a> (tr.netapp.link) <a href="https://anil.recoil.org/papers/netapp-tr-3152.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/netapp-tr-3152.pdf" target="_blank">PDF</a>Xen Hypervisor2002-01-01T00:00:00Z2002-01-01T00:00:00ZAnilMhttps://anil.recoil.org/projects/xenXen Hypervisor I was on the original team at Cambridge that built the Xen hypervisor in 2002 -- the first open-source "type-1" hypervisor that ushered in the age of cloud computing and virtual machines. Xen emerged from the Xenoservers project at the CL SRG, where I started my PhD and hacked on the emerging codebase and subsequently worked on the development of the commercial distribution of XenServer. Back at the turn of the century, the Computer Lab SRG faculty at the time (led by my first PhD supervisor <a href="https://anil.recoil.org/" target="_blank">Ian Pratt</a> ) decided to start the <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-552.pdf" target="_blank">XenoServers</a> project, which would build a public infrastructure for wide-area distributed computing. An <a href="https://gow.epsrc.ukri.org/NGBOViewGrant.aspx?GrantRef=GR/S01894/01" target="_blank">EPSRC grant</a> lead to a number of graduate students all surging into the SRG in around 2002 to work on the project, including me. The later history of Xen...Added a caching subsystem to Horde2001-08-20T01:00:00Z2001-08-20T01:00:00ZAnilMhttps://anil.recoil.org/notes/horde-cacheWhile 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. Add in a Cache framework for persistent storage and retrieval of cached objects. Consider it experimental for now. Basically works for Chora's needs ... implements a filesystem driver which tries to act sensibly (writes to a tmp file, then does an atomic rename to the cache object), to avoid synchronization issues. It does not cleanup the cached repository at the moment - needs to have a garbage collection function done at some point. -- <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20010820/003116.html" target="_blank">Anil Madhavapeddy</a>Chora now the production CVS viewer for PHP2001-08-05T01:00:00Z2001-08-05T01:00:00ZAnilMhttps://anil.recoil.org/notes/chora-live-on-phpI spent a chunk of time through the year working on the <a href="https://horde.org" target="_blank">Horde</a> project. I began when I got commit to <a href="https://www.horde.org/apps/imp/" target="_blank">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&r=6" target="_blank">horde-cvs</a> mailing list archive. After getting to grips with the PHP code, I then went on to totally rewrite the <a href="https://www.horde.org/apps/chora/" target="_blank">Chora</a> version control viewer so that the CVS repositories for Horde could be browsed online instead of only via the command line. I'm extremely proud to report that the <a href="http://php.net" target="_blank">PHP project</a> has <a href="https://lists.horde.org/archives/dev/Week-of-Mon-20010806/002886.html" target="_blank">now deployed Chora</a> for production use to serve up cvs.php.net , making it our biggest user by far. Thanks for making my day, Rasmus! I switched Chora over to be the default web cvs system behind cvs.php.net now. The old viewcvs site is still available at viewcvs.php.net (dns may not have...Added internationalisation to the Chora viewer2001-08-03T01:00:00Z2001-08-03T01:00:00ZAnilMhttps://anil.recoil.org/notes/chora-internationalisedOne of the coolest things about hacking on the <a href="https://horde.org" target="_blank">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. I've added in a simple <a href="https://lists.horde.org/archives/cvs/Week-of-Mon-20010730/002975.html" target="_blank">German translation</a> to start with, but please contribute your own strings if you get the opportunity.GPL release of OpenFX2001-02-10T00:00:00Z2001-02-10T00:00:00ZAnilMhttps://anil.recoil.org/notes/openfxSlashdot covers the GPL release of <a href="http://openfx.org" target="_blank">OpenFX</a> , which I worked on with Stuart Ferguson (my brother's PhD supervisor in Queen's University Belfast). 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.I am now a core PHP developer2001-01-09T00:00:00Z2001-01-09T00:00:00ZAnilMhttps://anil.recoil.org/notes/commit-access-to-phpI've been maintaining <a href="http://php.net" target="_blank">PHP</a> on OpenBSD for a while now, including the core package distributed as binary packages. 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" target="_blank">OpenBSD on PHP</a> official instructions. You can contact me on avsm@php.net if you need any help!I'm now an OpenBSD developer2000-12-26T00:00:00Z2000-12-26T00:00:00ZAnilMhttps://anil.recoil.org/notes/openbsd-developerI've been using OpenBSD for a few years now as the primary OS for <a href="https://anil.recoil.org/news?t=recoil" target="_blank">recoil</a> and have been contributing fixes and ports when I get a chance. So I'm incredibly excited to report that the project leader, Theo de Raadt, has invited me to become an OpenBSD developer. I've registered my keys now, and will be known as avsm@openbsd.org ! My first commit is to start fixing up the PHP port, which I have been working on in <a href="https://news-web.php.net/php.qa/652" target="_blank">PHP-land</a> for a while now. commit 93d5cc5ae56b22b19aa3bce34d38fa260b882d16 Author: avsm <avsm@openbsd.org> Date: Tue Dec 26 23:35:43 2000 +0000 - update to php-4.0.4 - bump NEED_VERSION - no longer need extra distfile number4.tar.gz since it has been integrated into the main distribution - ltconfig, mysql socket patches are in main distribution now, so they are removed. Note...I'm now a Horde core team member2000-10-16T01:00:00Z2000-10-16T01:00:00ZAnilMhttps://anil.recoil.org/notes/horde-developerAfter contributing some patches, I've now got the honour of becoming a <a href="https://www.horde.org/community/team" target="_blank">core team</a> member of the <a href="https://horde.org" target="_blank">Horde</a> project. Many thanks to Chuck Hagenbuch and Jon Parise for their trust in me! 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" target="_blank">Horde-CVS</a> commit archives, where I am avsm@horde.org !Paper on the NASA Mars Polar Lander website architecture2000-07-01T01:00:00Z2000-07-01T01:00:00ZAnilMhttps://anil.recoil.org/news/netapp-tr-3071-1Although the Mars Polar Lander ended up <a href="https://en.wikipedia.org/wiki/Mars_Polar_Lander#See_also" target="_blank">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 webmaster@mars.nasa.gov account at the time. I worked closely <a href="https://anil.recoil.org/notes/mars-polar-lander" target="_blank">with Sun</a> and NetApp and wrote up a technical report on how the Mars Polar Lander website acceleration architecture worked. <a href="https://www.linkedin.com/in/ndoherty" target="_blank">Niall Doherty</a> and <a href="https://anil.recoil.org" target="_blank">Anil Madhavapeddy</a> . Technical report (TR-3071) at <a href="http://tr.netapp.link/tr-3071.pdf" target="_blank">NetApp</a> . <a href="http://tr.netapp.link/tr-3071.pdf" target="_blank">URL</a> (tr.netapp.link) <a href="https://anil.recoil.org/papers/netapp-tr-3071.bib" target="_blank">BIB</a> <a href="https://anil.recoil.org/papers/netapp-tr-3071.pdf" target="_blank">PDF</a>Slashdot covers the Mars Polar Lander1999-12-03T00:00:00Z1999-12-03T00:00:00ZAnilMhttps://anil.recoil.org/notes/mars-polar-landerIn my capacity as <a href="https://anil.recoil.org/papers/netapp-tr-3071" target="_blank">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/" target="_blank">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" target="_blank">Sun press release</a> because of the Sun Netra T1 servers they gave us to host the website! You can read more about the architecture behind the site in " <a href="https://anil.recoil.org/papers/netapp-tr-3071" target="_blank">Application of a Distributed Web Site Acceleration: Mars Polar Lander</a> ".