since we were talking about use cases, this piece of @Beni Cherniavsky-Paskin's writeup stands out to me
model-view-self-modify.netlify.app/readme
Most important to me, it'd spread the subversive ideas that code is data is code, that "using" is "programming", that any UI forms a [weak] language, and that tools should be moldable.
the event sourcing pattern is useful simply to record the practice of an experienced editor - either oneself, or a more senior practitioner, usually
as Beni points out, chess folks use algebraic notation to reflect on their practice regularly
moldable tools make skillful practice feel easy. at the same time, I've never, ever seen beginners pick them up. and I've taught plenty of beginners who struggled with the excess degrees of freedom.
one key exception here might be Shiffman's Nature of Code; I encountered his tutorials through the in-editor Processing examples, which are great. (now he's got a fun and easy-to-read deepdive on flocking: natureofcode.com/autonomous-agents
exploration and explanation are not independently occurring social practices, despite editors and tutorials being separate artifacts
@Beni Cherniavsky-Paskin last week I wrote a higher-order function called a 'memo', that rewrote the source code to include a cached value so you could reuse computation across program executions. Specifically I was motivated for LLM calls, so you can share neuro symbolic programs without forcing people to have LLM keys (until they try to modify the program), but I do think source code rewriting is great for memoization or tiny persistence mechanism.
(I was cooking dinner for a party during meetup so could not ask questions but awesome meetup everyone)
📝 memo
memo wraps a function and deduplicates repeated computation. It can only be used as a top level function call. It works by rewriting itself own source code call to include its prior result, so that it can detect duplicates. Because the cache is implemented at the source level level, the cache survives export. Uses serialize-javascript under-the-hood so the arguments and results need to be compatible for it to work correctly.
The interface between exploration and explanation is exactly what I am working on, in my HyperDoc project. For a different audience than @Beni Cherniavsky-Paskin, but I suspect that many techniques are transferable.
The initial learning curve is something I see as a major obstacle, as @Jasmine Otto described. I'll look at Shiffman's work, which I wasn't aware of.
