jon.recoil.org

Weeknotes 2026 week 13

What did I do?

I spent rather a long time this week working an a review of the past few months of work, writing, rewriting, checking what I've written, rearranging, scratching my head and pondering. Too long. I did do some other stuff too though:

Standalone TESSERA page

I had built the Js_top_worker code with the intention of having it runnable in any old web page, not necessarily one hosted on the same site as the code. However, I hadn't actually demonstrated this working, so I set up a tangled-hosted site at https://jonludlam.tngl.io and put a basic Tessera notebook there. This (fortunately) worked more-or-less first time.

Standalone TESSERA notebook

The source for this is just a single html page. The repository is on tangled.

Oxmono docs build

Anil pointed out that his docs build in oxmono had stopped working - or perhaps never started working? I'd looked at this a couple of weeks back and found it was to do with the source rendering, which wasn't working correctly in the presence of multiple implementations of virtual libraries. I had "fixed" that on the 3.22 branch by disabling the source rendering rules by default, but I found out subsequently that dune 3.22 had some issues with oxcaml, so I needed to get the fix back onto the 3.21.1 branch. With that done, I tried running the docs build again, but it's OOMing on the rather limited (7G) workers that we get for free with GHA. Now it's definitely suspect that we can build the code itself but not the docs, so there's some odoc work to do there, but we should probably just build it on one of our servers before we tackle that.

Potential scrolly improvements

While writing the review, I had another look at the examples I've got in the Scrollycode plugin and rediscovered that they are quite underwhelming. They're obviously Claude-generated placeholders, but I've always had a particular use-case in mind. About 10 years ago I gave a series of seminars at Citrix, where, using the database code as example, I showed how we can use GADTs to improve upon what we had. The talks were structured by starting with some very simple code and improving it gradually, in much the same way that the build-your-own-react example of scrollycode does. This seems to me a good way to validate the odoc plugin, so I've dug that out. What's missing from the plugin, though, is modification support - currently we can only add code, so that will need to be fixed first.

What's next?

I've more-or-less achieve what I set out to do with the TESSERA notebook - I've demonstrated that OCaml is a perfectly capable platform for using in a notebook context to do purely client-side processing of geospatial data. For the next steps, I'm going to need to talk to my colleagues to figure out what the most useful thing to do is for TESSERA. There's plenty to do, but to prioritise everything correctly is going to need some discussion.

There are some open questions / areas to investigate in the purely notebook space:

Some more thoughts. Marimo uses python source as the primary source of the notebooks. One easy thing to do would be to have an ml file as the primary source for these. We've got easy access to the comments, which are already written in odoc markup. If we did this we'd get the power of merlin in the editor, which would be pretty nice.