Tom Larkworthy
07/25/2026, 5:21 PMTom Larkworthy
07/25/2026, 5:25 PMWasif Hyder
07/25/2026, 7:02 PMTom Larkworthy
07/25/2026, 10:18 PM() => widget(json) is quite easy to parse and inject new json. So now widget can returns a UI component that self-writes is UI state as JSON and then when the runtime is copied the JSON goes with it. There is also binary File support if you want to do data the vanilla persistence way. So with that we can build widgets, using code or UI, and the environment handles serialization to a single file, or upload to ATProto. The Audio thing uses a UI widget that is itself a container of cells, so you can drag widgets around inside the grid container... and it remembers on save, including the UI state of the sub widgets which is very important for something like Audio tooling
Building an Audio thing has been a parallel interest that I combine here. I always felt these should be more programmable, now the system can store UI state its good for creating programmable tools with fiddly knob twiddling you can save a hardcopy of.
The primary repo is here github.com/tomlarkworthy/lopecode, technically there is a getting started here try the robocoop-5 AI its got its own wiki that hopefully makes it somewhat competent but I usually use Claude Code out of this repo and then it knows how to do advanced things. My motivation is I want immortal software that is highly portable and I think a single HTML with no network dependancies is a good format, and I like the reactive programming model of spreadsheets and it provides a solid base for live programming.Wasif Hyder
07/26/2026, 7:02 AMTom Larkworthy
07/26/2026, 7:09 AMsource-last programming, I derive source code on-demand from the running runtime, at the lowest level from Function.toString(), this would be the IR you are describing. This removes a fair amount of coordination effort and makes more sense for live systems where the initially loaded code is not the final code listing of the program (you expect a live programming system's code to change during execution). Then you can have multiple languages too.Wasif Hyder
07/26/2026, 7:01 PM