Kartik Agaram 2021-05-18 06:37:22 I spent some time recently riffing on (what I understand of) Ivan Reese's Hest.
https://archive.org/details/akkartik-mu-2021-05-17 (video; 3.5 minutes)
To try it out after watching the video:
git clone [https://github.com/akkartik/mu](https://github.com/akkartik/mu)
cd mu
./translate hest-life.mu
qemu-system-i386 -enable-kvm code.img
Works best in Linux, though other Unix platforms will also work at a pinch. You'll need to translate_emulated
rather than just translate
, which is much slower. You'll also need to remove -enable-kvm
and potentially replace it with some other type of Qemu acceleration.
Kartik Agaram 2021-05-18 14:03:06 I've just been reminded of the existence of double buffering π No idea why I forgot about it.
Daniel Garcia 2021-05-18 17:22:54 Really cool Kartik Agaram!
How are the cells computing their alive/dead value? Is there a representation of an if
or a different way of branching?
Ivan Reese 2021-05-18 19:00:36 What a delight! The build toward the reveal at the end was masterful.
It's so neat to see these ideas translated into a different context, with a whole different set of priorities.
I love the looper idea. Totally stealing that.
Thank you for building this, Kartik! (And for the kind words.)
Kartik Agaram 2021-05-18 19:34:56 Daniel Garcia I chose to hide that conditional logic within the green node inside each cell. There isn't really a default representation of anything here, it's all completely ad hoc for this particular app. I'm sure something more real-world will require being able to represent conditionals.
Ivan Reese I thought I got the looper idea from you! π
Jack Rusher 2021-05-19 09:30:48
I: I'm stealing that great idea!
K: I thought I got the idea from you!This is what the community working properly looks like π
Jamie Brandon 2021-05-18 23:11:25 Chris Granger 2021-05-19 01:31:04 Iβm still not convinced that level of liveness is all that useful outside of constrained editing modalities like scrubbing through numbers, which gives you some leverage on the problem I think.
Chris Granger 2021-05-19 01:32:05 SQLiteβs strategy is more or less the one I landed on in the end for cases where you need to bound execution in a useful way (assuming you control the compiler).
Jamie Brandon 2021-05-19 04:02:32 I need to do something like this anyway, because even if the repl is not live you still need to be able to interrupt long-running queries.
But I do think live repls can provide a lot of good feedback. Not just showing the results, but providing IDE-like features like showing you examples of values when you mouse over a variable. And that also requires being able to speculatively run and interrupt the interpreter.