Beginnings of an environment for building programs...
# two-minute-week
k
Beginnings of an environment for building programs live. Includes some discussion of how the program is represented, including version history. This is all nothing new compared to Emacs, Lisp, Smalltalk, etc. What draws me to this project is trying to implement these features on a much simpler and so hopefully easier to learn and more self-sufficient stack. This project has been fermenting in a couple of past threads: • https://futureofcoding.slack.com/archives/CCL5VVBAN/p1665503282267399https://futureofcoding.slack.com/archives/C03RR0W5DGC/p1665594315849469 Next step: use the version history to recover from errors. The big epiphany for me has been that I can recover from errors without restarting the entire program -- as long as programs submit to LÖVE's constraints: purely synchronous programming with an event loop, so that no single function can be long-lived. You can write any programs you like as long as they aren't batch programs.
i
You can write any programs you like as long as they aren't batch programs.
All my favourite programs aren't batch programs! :)
k
I hope you appreciate the depth of what this community has done to me over the past 4 years!
i
It's a shared madness, really :)
c
Very nice! For a long time I've been thinking about this versioning thing; and how to do it. I like your manual approach (as apposed to using git, for example). What I'd like to see in tools like Sonic Pi, is the ability to record and play back a session like this. Too often moments in live performances are lost to whatever the state was at the time; but having a slider and a way to go back to a given point would be a really nice feature. Of course, with animation, you have to time-stamp each change, and there may be issues with having everything turn out exactly the same. But it would still be a really useful feature.
w
Does LÖVE play well with Lua's builtin coroutines? Seems like maybe https://love2d.org/forums/viewtopic.php?t=8531. Of course, coroutines are synchronous, long lived functions, and so you need to keep in mind when to
coroutine.yield()
and what might change between from resumes.