Hi,

On 3/03/22 8:52, Edward K. Ream wrote:
In this Engineering Notebook post I'll explore changing Leo while Leo is running.

Imo, changing Leo "on the fly" is impossible, but thinking about what would be necessary might suggest potential improvements to Leo

*Background*

Live coding is supposedly a killer feature of smalltalk. I have my doubts, discussed below.


It is a killer feature. Most of the time when I see doubts about a not well known/understood technology or alternative, it is mostly formulated from the direct experience with the technology against what we're are comparing it, in contrast to what we have heard about the alternative. I not saying that this is your case, but it has happen to me, particularly in programmers circles, when they are comparing lets say Pharo against more popular computer languages/environments or Fossil against Git. Another point is that the alternative is not similar enough to the

*Barriers to changing running apps*

All apps, regardless of language, are /inherently inflexible/:

By some fundamental comparison, all apps can share some inherently feature, being all Turing machines or equivalent in (virtual) machine code. The issue for me, is the metaphors and experiences they provide when apps are presented to us. That's why direct experience with alternatives, particularly when they different to what we're used to is important.


1. The architecture can't change.  In particular, APIs are contracts that can't easily be broken.  Refactoring implies restarting the app.

2. Objects (instances of classes) contain data that must be retained. In general, changing any module might change the data that the module computes.

Live coding apps (in the arts) give the /illusion/ of flexibility:

1. The app's architecture and primitives remain fixed (and inaccessible to the artist).
2. The artist's code is /rerun completely /whenever the code changes.

I like the definition of architecture as the stuff that is difficult to change [1][2] and in that sense the important thing would be how an app bring us affordances to traverse/understand architecture (and maybe to change it). Also language primitives are not fixed in Smalltalk based environments. If you want, you could change the way booleans work on the fly (and assume the consequences).

[1] "Good Enogh" Architecture: https://youtu.be/PzEox3szeRc
[2] Architecture: The Stuff That's Hard to Change https://youtu.be/3LtQWxhqjqI

Coming back to different metaphors and experiences, instead of some fundamental metric of equivalence (like rerunning on changes), the distinctive factor would be the kind of understanding and conversations that a live coding environment is enabling between the user/dev and the artifact itself and how this have consequences in the creations/tasks at hand. To have a glimpse of it, there is the, now classic, video "Inventing on principle"[3] and for a more developer/coding oriented one, there is "Moldable development"[4]. In both cases, because programming is not mainly dealing with text and blindly manipulating symbols, and instead being engage in a "artifact conversation" where different representations are provided to easy such conversations and we can see the consequences of our code in a more direct way over the artifacts.

[3] https://vimeo.com/38272912
[4] https://www.youtube.com/watch?v=Pot9GnHFOVU

In my case, the conversation I had with textual artifacts, was easy by the Leo affordances, when I was able to split and recombine the text at hand (prose or code), according to my understanding of it. Pharo, Lepiter and other live coding environments provide me with the possibility to run small snippets of code and extend the representation of the system I'm dealing with on the fly to increase my understading. I want. Grafoscopio is my attempt to combine both experiences: live coding and outlining in a single tool and to see the consequences of such tools in agency of grassroots communities, starting at our local hackerspace (HackBo).

**Summary* *

Live coding in the arts gives the illusion of dynamism.

It's not possible to change the architecture of an app on the fly, regardless of language.

Reducing the static data in some of Leo's classes might simplify Leo. Or not. I'll discuss this topic in another post.


My summary would be in the lines of the importance of which innevitable illusions/metaphors we bring while building digital tools (as we're are not dealing with changes in current in microprocessors) and the affordances/capabilities they bring to our comunities (for example of users).

Cheers,

Offray

--
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/4b2ed232-d9c3-317d-4802-951ccb3e6a94%40riseup.net.

Reply via email to