https://toobnix.org/w/752ix2RNx5BijosuYtSGCv #archive
In about 24 hours from this toot
@oantolin
https://www.matem.unam.mx/~omar/
https://github.com/oantolin/embark
will be on the Tuesday-night-in-the-Americas #lispyGopherClimate on anonradio (archive still https://toobnix.org/a/screwtape/videos ) to talk about

#emacs #embark <edit>

- actually, I am not a user (yet) but I am interested in other #lisp community takes on embark's #DWIM plementation (well known in #interlisp https://interlisp.org/software/using-medley/#getting-started for example). The theme viz @chiply last weekcont.

@oantolin @chiply alright, it is that time!

https://toobnix.org/w/752ix2RNx5BijosuYtSGCv New extended cut archive !

#Live #interview with Omar about #emacs #embark + #lisp ..

#RSS subscribe to the recent #archive https://toobnix.org/feeds/videos.xml?accountId=580185 #peertube ! (I am told "use the peertube app").

#climateCrisis #haiku from @kentpitman and slak of #lambdaMOO . #chat in https://lambda.moo.mud.org/ as always using your favourite #mud client !

#lispGames #springLispGameJam @mdhughes

@nosrednayduj is busy squaredancing tonight.

#Emacs #Embark with Omar Antolin, Ramin Honary and Kent Pitman #lisp and more #interview #lispyGopherClimate

PeerTube
@oantolin
By the way, can one view emacs as having a topological model? Or is this an even worse question than what-are-things-like-climates-like-topologically?
@northernlights @chiply @kentpitman @mdhughes @nosrednayduj

@screwlisp
While waiting on their reply, "anything can have a topological model!" -- well, so long as we're talking things with invariants over continuity (note that that includes continuous state spaces), neighborhoods ('nearness' is definable and not too badly behaved), or deformation invariance, and also complexes from gluing such things together.

In your case you probably particularly loved manifolds.

Or something like that. Maybe..

@oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

It seems to me we ought to have a space first before defining or constructing its topology (or is that approach out of fashion nowadays?).
So, what is an Emacs space and what are its points?

I'd rather listen to other people's suggestions first, and in any case mine are too raw yet.

@dougmerritt @screwlisp @oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

@vnikolov
Seems logical to me, since going from topology to space is basically creating an example.

@screwlisp @oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

The Dawn is a friend of the Muses (again).
My intuition (to the extent I have any about topology) whispers "show me a continuum".
Since all possible Emacs states (a superset of all possible Emacs buffer contents) are only countably many, perhaps we ought to look for a continuous topological space that some Emacs space _approximates_.
In our Unlimited Free Time.

@dougmerritt @screwlisp @oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

A little more food for thought.

Suppose each of our points is the content of an Emacs buffer.
Consider the following distance D between two such points:
the length of a minimal sequence of editing operations that turns one into the other.
Then explore whether D induces an interesting topology.

Some open questions:
Is D well-defined?
(Is it computable?)
Does it define a metric, e.g. does it obey the triangle inequality?
Does this (discrete) construction correspond to some kind of continuum?

I am tempted to _guess_ that the answers are yes (no), yes, yes, but whatever they are, they don't seem quite obvious...

_________
And a variation on that theme by Gamow:
as easy as aleph one, two, three...

@dougmerritt @screwlisp @oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

@vnikolov
> the length of a minimal sequence of editing operations that turns one into the other.

String rewriting systems are semi-Thue systems, isomorphic to unrestricted grammars, which are Turing complete.
https://en.wikipedia.org/wiki/Semi-Thue_system

@screwlisp @oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

semi-Thue system - Wikipedia

@dougmerritt

(1) Yes, what is an editing operation in this context is an important question to be settled and it seems to me there may well be multiple options.
At least one of them would involve a Turing-complete system, as you point out, but there may be other simpler options as well.

Then it will be necessary to settle the notion of length, size, or measure appropriately in order to speak of minimality.
Note that

(erase-buffer)
(insert "...half a zillion characters...")

shouldn't be counted as having length or size of just two operations (by the way, compare this example to the metric of French railroads as well).

Yet another problem with distance here is that for a metric, distance must be symmetrical.

(2) And a conjecture to wrap my thoughts up:
the resulting topological space has a finite number of dimensions, and that number depends on the feature set of the available editing operations and the language in which they can be composed.

@screwlisp @oantolin @northernlights @chiply @kentpitman @mdhughes @nosrednayduj

@vnikolov @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

For all its Spartan nature, a Turing machine can test things. TECO has the ability to test. It left a lot of that behind in becoming real time. Instead, for the most part, judgment has been outsourced to the human user. I don't mean to say that there's nothing available, because probably there is. And Turing machines have a way of showing themselves even when the capability is obscure, as at least a theoretical matter. But that's also one reason that Turing machines are not a very good metric.

Maybe something has been done since the time when I use them a lot, but I was surprised at how little support there was for programming in keyboard macros back in the TECO days. The ability was there to do control-x q, which inserts a yes/no query about whether to do the remaining part of the macro. That's extremely important if you're going to iterate the macro because then you can build something like query replace.

I remember making several other suggestions, some of which I implemented and some of which I don't know that were ever implemented.

I wanted to control-x q to be something that allowed me to respond with other than just space, as I recall. Instead with control-r, giving me a recorded excursion into the buffer at this particular point to do an alternate ending to the plot for that iteration. Then it could pop up a menu the next time, or perhaps just use space again but allow me to type m for menu to see the menu that I knew was there because I interactively wrote another option. Then I could iteratively learn a variety of situations as I was making a big code change by hand.

But this is a place where Omar's embark stuff might be interesting. Because it might be able to infer something from where it landed and there might be a way instead of saying control-x q to inject an embark operation, whether one that did prompting, or a dwim one.

In the long ago days, it might have been impractical to save these things across sessions, but an option variable could allow all such macros to be saved in a history, and that history to be reviewed, edited and named, so that later on one didn't have to reteach the same things.

I had an extension on control-x # that would keyboard macro insert a number with a default value probably of one, I could look it up. But the important thing is that you could give it an argument of what the default value was and on the first iteration of the keyboard macro it would use that and on subsequent interations it would bump the value by one. And then you could write something that created a numeric version of a bullet list.

But you could write something that allowed you to say, while defining the keyboard macro, let me mark a region, and then that prompted you for some way of saying whether it was what you wanted. Perhaps you could say it was a certain type that would be useful to embark. Perhaps you could say it was a regular expression that controlled whether to do the rest of the macro or chose which of several branches you had created in the macro. To do the latter you would have to know that the branches were there, so the test would have to be injected in response to the query about whether to do it.

If you were doing it a definition time initially, you would probably want it to prompt you for one branch, and then restore the state back to that branch and prompt you for the other branch and then restore the state back to that and ask you if you were done. Each pattern except for the last would need to match whatever it's associated test was. And if there was more than one branch, you need to present a menu saying which one do you want to do in this case. A variation on this would be to insist that there was only a matching pattern and a non-matching pattern and then that could be executed automatically without a menu.

That last part about prompting for patterns is something I'm just thinking of now, not something I had thought about at the time, but it's in the context of this discussion about editors being Turing machines. They need to be able to ask questions in other words.

Just having the ability to count the number of times you've entered a certain branch seems useful, so you could have a command that counted silently and a companion that retrieved that number into the buffer, or did a test on that. If the place that that number wanted to be stored had a name of some sort, you could have an array of other kinds of names of such things, and things that did various kinds of tests on what was in that storage, like what happens in bash with its various tests. At that point you would have a pretty rich set of testing capabilities and then the rest of this conversation above would make more sense to me.

Of course if you're only talking teco, it was able to substantially, though not completely, introspect and redefine the great deal of itself because such capability was built in.

@vnikolov @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

To put this in context I should say that on the list machine there are commands that I don't think are in emacs. I won't describe them but I'll say their names (from memory and without regard to precise syntax in terms of spaces and dashes because I'm using voice input) and I bet you can figure out if you know emacs what they would probably do.

(Tags search is presumably there in emacs. Tags tables, for those who don't know, are just files full of file names in order to allow you to treat a group of files as a unit, often referred to as a tags table. In effect a kind of virtual directory and the kind of thing that might be comprised of the files in a defsystem or something like that.)

So zmacs had commands like

Multiple Query Replace
Tags Query Replace
Tags Multiple Query Replace
Multiple Query Replace From Buffer
Tags Multiple Query Replace From Buffer

The front buffer ones were ones that took a set of pairs that you didn't have to interactively prompt for but could spend some time setting up because it was really hard to do a large set of things interactively. And it wouldn't parallel offer to do all the replacements at once, allowing you to do things weird and slightly unsafe like replacing x for y and y for x if I recall, because it moved to the cursor and knew which ones had been done and which ones hadn't. Although it was vulnerable to you moving the cursor and messing that up. Still not competing replacements were pretty useful.

And part of the reason I mentioned this is that I did some rather large query places. For example when I inherited the ansi cl draft spec from my predecessor-in-editorship, Kathy Chapman, she had done a substantial amount of reshaping it to look like the modern spec, having started with cltl as the base document, believe it or not. The one thing she retained was that Steele had been more comfortable with the markup language called Scribe that used notations like @Chapter(foo) and i think maybe even @endcapter(foo), and I wanted it to look like TeX. He had made at sign in backslash be synonyms, and use them somewhat interchangeably, so usually one for one task and one for another, not really haphazard. I wanted to at-sign back.

So I set about one day to do a tags multiple query replace from buffer of a variety of notations on the entire specification. My recollection is that it took several days to complete that.

I had similar large experiences with Macsyma, which was 100k lines of code, where I was doing various kinds of conversions. Some of them had to be done structurally but some could be done by simple replacement. So again I used these tools. And in fact I had macros that could do structural rewrites that it would have been great to be able to call if the query harness has supported it. Fortunately for those, I could do them haphazardly and so tags search worked just as well, and I could just leave the possibilities buffer in place so I could stop in the middle of things and go and do other things.

Modern emacs might or might not have the equivalent of a possibilities buffer. It was the generalization of all of these things that create lists of to-do items. I don't know if that's a standard structure now but it was on the list machine. So if you were mapping over several files doing the same operation for example, you could make a possibilities buffer that was the list of the files in the tags table, and it would serve as your file level cursor. If you want to back up by a file you could just move the cursor to a different place in the possibilities buffer and go back and start again from there. It would visit the file in a buffer and use the buffers cursor as its finger in that and so when you said control-dot, I think it was, to resume whatever possibilities related action you were in the middle of it would just go to the current possibilities buffer and it's item's cursor and continue.

Such buffers with number themselves, and you had to prune that after a while. It was not uncommon for me to have 50 or 100 possibilities buffers stacked up because I would get interrupted in the middle of something and start something else and it would keep track of what I'd been in the middle of. And I could go back and generally resume those things later I would check each one to see whether I was still doing that operation and get rid of it otherwise. But it was amazing exercise in keeping track of vast amounts of data.

Tangential:

«Kathy Chapman, she had done a substantial amount of reshaping it to look like the modern spec, having started with cltl as the base document, believe it or not.»

Myself, I have known that for a long time.
For one, it's been mentioned here and there (I couldn't possibly recall exact quotes, though).
For two, it shows in the text, if one looks carefully at some fragments.

«Steele had been more comfortable with the markup language called Scribe»

I think the second edition of _Common Lisp: the Language_ mentions a throwaway program to convert that to TeX.

@kentpitman @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

@vnikolov @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

I don't know if such a program existed at the time, but I know the entire community was depending on me to preserve the integrity of all of their investment. So I wanted to be sure.

There is an analog here to have an llm could probably have volunteer to do it, too, today. And yet too often these discussions turn to capability, when trust is really the thing.

Even in the domain of human language translation, there is this issue. If all you're doing is reading a magazine article, and you know it was done imperfectly, you might tolerate automatic translation. But if you're engaged in diplomacy or design of an airplane wing or faithfully maintaining community records, other values may prevail beyond simply likely correctness.

Even proven correctness is not good enough because you have to believe the preconditions of the proof. For example, if there's a comment that says a piece of code, and that code needs to be converted, you'd have to understand the human language around it to know whether it was saying remove this comment marker to change this or it was saying: a long time ago we used to write x. Where then the x wants to retain its original form under all translations.

Even just something as simple as

(defun foo () ; I have rigorously tested this
...)

If mechanically translated by something that claims to be provably correct, will end up lying.

P.S.
A tiny detail:

Kent Pitman had written:
«Steele had been more comfortable with the markup language called Scribe»

Then I wrote:
«I think the second edition of _Common Lisp: the Language_ mentions a throwaway program to convert that to TeX.»

The latter may have been mentioned in the colophon of the second edition (I think it had one, but I don't have a way to go back to that colophon now).
I don't have any other recollection where I may have seen that.

@kentpitman @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

@vnikolov @kentpitman @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj now I’m wondering if this “Scribe” be any resemblance to the “Scribble” language in the Racket world? Likely just an obvious overlap in nomenclature, but it’s enough to pique my interest.

Stuttgart!
Where they put a "my other car is a Mercedes" sticker on a Porsche 🙂.

@kentpitman @tealeg @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

@vnikolov @tealeg @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

Ha. Around 1990 or so, Volkswagen had car commercials that all centrally featured the word "Fahrvergnügen" as a way of summing up their pride in German engineering. I was working with people from Germany and, since we didn't have Google translate back then, it occurred to me to tell one of them about the commercials and ask what the word actually meant. They laughed and said "Well, it means 'driving enjoyment' ... but we usually associate that more with Mercedes."

https://www.youtube.com/watch?v=neirGvoH5n4

VW TV Advertisements - Fahrvergnügen (1990s Water Cooled era)

YouTube
@kentpitman @vnikolov @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj those views about VW vs Mercedes, etc. have a certain regional vibe (though, of course, Mercedes, Porsche and BMW are generally perceived as more luxurious than VW).
@kentpitman @vnikolov @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj also, this advert made me feel much better about my own German skills ;-)

Three things you or may not have heard before
(in reverse chronological order, from memory):

When Kraftwerk issued an English-language version of their early hit Autobahn, "fahren" ("drive") became "fun":
"Fun, fun, fun on the Autobahn."

The original Volkswagen (the "beetle") was designed by the third Porsche.

An Austrian-Hungarian royal once visited the factory of the first Porsche.
Maybe it was the Erzherzog himself.
He wanted to show that he understood engines, and said:
"This is a _four_ stroke engine, isn't it?"
"Yes."
"Then why does it have _six_ cylinders?"
Porsche didn't blink an eye:
"Four working and two spare."

@tealeg @kentpitman @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj

@vnikolov @kentpitman @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj Audi, of course, have gained great advantage from their Four Spring Duck Technique
@vnikolov @kentpitman @dougmerritt @screwlisp @oantolin @northernlights @chiply @nosrednayduj incidentally, the slogan refers to the great efficiency achieved by standardising their order at a Chinese restaurant.