diff options
| author | EmacsConf <emacsconf-org@gnu.org> | 2025-12-07 09:10:21 -0500 |
|---|---|---|
| committer | EmacsConf <emacsconf-org@gnu.org> | 2025-12-07 09:10:21 -0500 |
| commit | 95cc366021716300290d4fed1041565ccb34a900 (patch) | |
| tree | e65ed91e8eb6c73863bb31ae3bb0320ab1d0e80b | |
| parent | 75300da782a2a39f2467f1b840deaa41aaedffca (diff) | |
| download | emacsconf-wiki-95cc366021716300290d4fed1041565ccb34a900.tar.xz emacsconf-wiki-95cc366021716300290d4fed1041565ccb34a900.zip | |
Automated commit
Diffstat (limited to '')
| -rw-r--r-- | 2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt | 727 | ||||
| -rw-r--r-- | 2025/info/modern-after.md | 246 | ||||
| -rw-r--r-- | 2025/info/modern-before.md | 4 |
3 files changed, 974 insertions, 3 deletions
diff --git a/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt b/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt new file mode 100644 index 00000000..e461b1f1 --- /dev/null +++ b/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt @@ -0,0 +1,727 @@ +WEBVTT +Kind: captions +Language: en-GB + +00:00:54.000 --> 00:00:55.000 + + +00:00:55.000 --> 00:00:57.000 +Hi! My name is Eduardo Ochs. I'm the + +00:00:57.000 --> 00:01:00.000 +author of an Emacs package called eev and + +00:01:00.000 --> 00:01:03.000 +the title of this video is + +00:01:03.000 --> 00:01:05.000 +"Some problems of modernizing Emacs". + +00:01:05.000 --> 00:01:08.000 +Here is a summary of the main themes + +00:01:08.000 --> 00:01:10.000 +of this video. I'm going to talk mainly + +00:01:10.000 --> 00:01:12.000 +about these four things here. The first + +00:01:12.000 --> 00:01:15.000 +one is that Emacs has changed a lot in its + +00:01:15.000 --> 00:01:18.000 +recent versions, and now it has lots of + +00:01:18.000 --> 00:01:21.000 +types... so if we want to look under the + +00:01:21.000 --> 00:01:24.000 +hood and to understand what Emacs + +00:01:24.000 --> 00:01:27.000 +really does we are going to stumble on + +00:01:27.000 --> 00:01:30.000 +lots of types... and the + +00:01:30.000 --> 00:01:34.000 +current tree of classes and types + +00:01:34.000 --> 00:01:37.000 +looks like this... that is, + +00:01:37.000 --> 00:01:46.000 +is quite big. + +00:01:46.000 --> 00:01:49.000 +The second theme is that people used + +00:01:49.000 --> 00:01:53.000 +to say things like "Anyone can learn Lisp + +00:01:53.000 --> 00:01:56.000 +in one day"... I'm going to explain + +00:01:56.000 --> 00:02:01.000 +this quote, and I'm also going to show + +00:02:01.000 --> 00:02:04.000 +that now this is gone... anyway. This is a + +00:02:04.000 --> 00:02:08.000 +very short summary... details soon. + +00:02:08.000 --> 00:02:10.000 +I will also show how to display + +00:02:10.000 --> 00:02:13.000 +better "inner views" of Emacs objects... + +00:02:13.000 --> 00:02:16.000 +I'm going to Define what is an inner view, + +00:02:16.000 --> 00:02:18.000 +of course. + +00:02:18.000 --> 00:02:20.000 +The main trick is that we are going + +00:02:20.000 --> 00:02:24.000 +to use one of the ways of displaying + +00:02:24.000 --> 00:02:29.000 +internal objects, that is the `cl-print' + +00:02:29.000 --> 00:02:32.000 +family of functions, for example, + +00:02:32.000 --> 00:02:35.000 +`cl-prin1-to-string', and here are some + +00:02:35.000 --> 00:02:37.000 +examples of the kind of output that we + +00:02:37.000 --> 00:02:38.000 +are going to see... + +00:02:38.000 --> 00:02:44.000 +for example, if we run these two lines + +00:02:44.000 --> 00:02:47.000 +here the first line defines a function `foo' + +00:02:47.000 --> 00:02:52.000 +and the second line sets `o' to the + +00:02:52.000 --> 00:02:54.000 +internal view of the definition of `foo'. + +00:02:54.000 --> 00:02:59.000 +In older Emacses `o' would be just a + +00:02:59.000 --> 00:03:02.000 +list that looks... that would look very + +00:03:02.000 --> 00:03:05.000 +similar to this line here... but in newer + +00:03:05.000 --> 00:03:09.000 +Emacses the result of this - I mean, the + +00:03:09.000 --> 00:03:12.000 +the contents of `o' is this thing here, + +00:03:12.000 --> 00:03:15.000 +that looks quite different + +00:03:15.000 --> 00:03:18.000 +from this definition. + +00:03:18.000 --> 00:03:21.000 +So, in older Emacses + +00:03:21.000 --> 00:03:25.000 +the contents of the + +00:03:25.000 --> 00:03:28.000 +function cell of `o'... + +00:03:28.000 --> 00:03:30.000 +sorry, of the function cell of `foo', + +00:03:30.000 --> 00:03:32.000 +would be an "old-style lambda", + +00:03:32.000 --> 00:03:35.000 +that would be just a list like this... + +00:03:35.000 --> 00:03:39.000 +and in newer Emacses uh the contents of O would + +00:03:39.000 --> 00:03:42.000 +be a "vector-like lambda"... look for the + +00:03:42.000 --> 00:03:44.000 +square brackets here - this is a + +00:03:44.000 --> 00:03:47.000 +vector, but it is preceded by a hash sign. + +00:03:47.000 --> 00:03:49.000 +So this is what we call + +00:03:49.000 --> 00:03:51.000 +a "vector-like lambda", + +00:03:51.000 --> 00:03:53.000 +and vector-like lambas do not + +00:03:53.000 --> 00:03:55.000 +have a canonical printed representation - + +00:03:55.000 --> 00:03:57.000 +they have at least two semicanonical + +00:03:57.000 --> 00:03:59.000 +printed representations... + +00:03:59.000 --> 00:04:01.000 +The first semicanonical + +00:04:01.000 --> 00:04:04.000 +printed representation is this one, that is + +00:04:04.000 --> 00:04:07.000 +generated by a family of functions with + +00:04:07.000 --> 00:04:09.000 +names like `prin1'... + +00:04:09.000 --> 00:04:13.000 +and the second semicanonical printed + +00:04:13.000 --> 00:04:17.000 +representation is like this - + +00:04:17.000 --> 00:04:20.000 +it looks like a list... + +00:04:20.000 --> 00:04:23.000 +it looks somewhat like this definition + +00:04:23.000 --> 00:04:27.000 +of `foo' here, but it has this + +00:04:27.000 --> 00:04:29.000 +`:dynbind' symbol here... + +00:04:29.000 --> 00:04:32.000 +and it turns out that when we use + +00:04:32.000 --> 00:04:35.000 +the `cl-print' family of functions we can + +00:04:35.000 --> 00:04:37.000 +reconfigure how things are printed... + +00:04:37.000 --> 00:04:40.000 +and I'm going to show several interesting + +00:04:40.000 --> 00:04:47.000 +ways of reconfiguring how lambdas are printed, + +00:04:47.000 --> 00:04:49.000 +and one of the ways is going to + +00:04:49.000 --> 00:04:52.000 +be like this. + +00:04:52.000 --> 00:04:56.000 +We can also use the `cl-print' + +00:04:56.000 --> 00:04:59.000 +functions with my indentation tricks to + +00:04:59.000 --> 00:05:04.000 +to display how types, or classes, are + +00:05:04.000 --> 00:05:07.000 +viewed internally by Emacs, and this is a + +00:05:07.000 --> 00:05:10.000 +big example... + +00:05:10.000 --> 00:05:14.000 +This is what Emacs considers as being + +00:05:14.000 --> 00:05:16.000 +the definition of the type + +00:05:16.000 --> 00:05:18.000 +`cl-structure-class', + +00:05:18.000 --> 00:05:21.000 +class and it is this big thing here. + +00:05:21.000 --> 00:05:24.000 +I edited it very lightly... + +00:05:24.000 --> 00:05:30.000 +I just uh deleted some line breaks here. + +00:05:30.000 --> 00:05:33.000 +And another thing that I want to to + +00:05:33.000 --> 00:05:35.000 +explain is that Emacs + +00:05:35.000 --> 00:05:37.000 +has some help functions that + +00:05:37.000 --> 00:05:39.000 +I have never liked... + +00:05:39.000 --> 00:05:41.000 +for most people they are good enough, + +00:05:41.000 --> 00:05:44.000 +but for me they aren't... they... + +00:05:44.000 --> 00:05:48.000 +uh, well - I'm going to say + +00:05:48.000 --> 00:05:50.000 +more about this later... + +00:05:50.000 --> 00:05:52.000 +and, for example, + +00:05:52.000 --> 00:05:54.000 +if we want a description of what is + +00:05:54.000 --> 00:05:58.000 +this type here, that we just saw in + +00:05:58.000 --> 00:06:00.000 +its internal view here... + +00:06:00.000 --> 00:06:02.000 +we can run either `describe-type' + +00:06:02.000 --> 00:06:04.000 +or my variant of `describe-type', + +00:06:04.000 --> 00:06:07.000 +and we get a help buffer + +00:06:07.000 --> 00:06:10.000 +that looks like this, in which + +00:06:10.000 --> 00:06:13.000 +these blue things that are underlined + +00:06:13.000 --> 00:06:15.000 +are "buttons", in the classical sense... + +00:06:15.000 --> 00:06:17.000 +you can click on these buttons, or type + +00:06:17.000 --> 00:06:19.000 +RET on these buttons, and you will be + +00:06:19.000 --> 00:06:22.000 +taken to another help page, that is + +00:06:22.000 --> 00:06:24.000 +generated dynamically... + +00:06:24.000 --> 00:06:28.000 +and you can navigate back and forth... + +00:06:28.000 --> 00:06:30.000 +and well, whatever... + +00:06:30.000 --> 00:06:33.000 +and I'm going to explain my + +00:06:33.000 --> 00:06:35.000 +problems with these kinds of help buffers + +00:06:35.000 --> 00:06:37.000 +and what I'm trying to do to + +00:06:37.000 --> 00:06:41.000 +overcome these problems... + +00:06:41.000 --> 00:06:43.000 +One of my slogans in this video + +00:06:43.000 --> 00:06:43.000 +is going to be this one: + +00:06:43.000 --> 00:06:45.000 +"Anyone can learn Lisp in one day". + +00:06:45.000 --> 00:06:49.000 +this is a part of a bigger quote + +00:06:49.000 --> 00:06:51.000 +that I took from a keynote presentation + +00:06:51.000 --> 00:06:54.000 +by Abelson and Sussman, who + +00:06:54.000 --> 00:06:58.000 +are two dinosaurs of Computer Science... + +00:06:58.000 --> 00:07:00.000 +Here is the full quote: + +00:07:00.000 --> 00:07:04.000 +"Anyone can learn Lisp in one day - + +00:07:04.000 --> 00:07:06.000 +except that if they already know Fortran + +00:07:06.000 --> 00:07:11.000 +then it would take three days." + +00:07:11.000 --> 00:07:24.000 +This is a frame of the video... + +00:07:24.000 --> 00:07:28.000 +By the way I am going to to add + +00:07:28.000 --> 00:07:32.000 +this... "and if the person is starting + +00:07:32.000 --> 00:07:34.000 +with Doom Emacs then it would take 5 years." + +00:07:34.000 --> 00:07:39.000 +why? I'm going to explain why. + +00:07:39.000 --> 00:07:43.000 +This is how Emacs used to be. + +00:07:43.000 --> 00:07:46.000 +If we execute these two expressions here + +00:07:46.000 --> 00:07:51.000 +the first one... sorry, each symbol can + +00:07:51.000 --> 00:07:53.000 +have two "values", + +00:07:53.000 --> 00:07:54.000 +one is its "value as a variable" + +00:07:54.000 --> 00:07:58.000 +and another one is its "value as a function"... + +00:07:58.000 --> 00:08:02.000 +and if we run this we store 42 + +00:08:02.000 --> 00:08:07.000 +in the "value cell" of the symbol `foo', and + +00:08:07.000 --> 00:08:11.000 +if we run this defun here it stores a + +00:08:11.000 --> 00:08:14.000 +certain anonymous function in the + +00:08:14.000 --> 00:08:18.000 +"function cell" of the symbol `foo'... + +00:08:18.000 --> 00:08:22.000 +and in Emacs, until some time ago + +00:08:22.000 --> 00:08:27.000 +if we did that and and if we ran + +00:08:27.000 --> 00:08:30.000 +this expression here the result + +00:08:30.000 --> 00:08:31.000 +would be 42, + +00:08:31.000 --> 00:08:35.000 +because of this line here, and if we + +00:08:35.000 --> 00:08:37.000 +ran this line here the result would be + +00:08:37.000 --> 00:08:40.000 +the anonymous function corresponding to + +00:08:40.000 --> 00:08:41.000 +this defun here... + +00:08:41.000 --> 00:08:45.000 +but now this has changed... + +00:08:45.000 --> 00:08:48.000 +the result of this thing here is this + +00:08:48.000 --> 00:08:51.000 +vector-like lambda here - but that doesn't + +00:08:51.000 --> 00:08:54.000 +matter much now... + +00:08:54.000 --> 00:08:56.000 +So, until some time ago + +00:08:56.000 --> 00:08:58.000 +if we did that and if we ran + +00:08:58.000 --> 00:09:01.000 +this expression here, (foo foo)... + +00:09:01.000 --> 00:09:04.000 +Emacs would do this: it would + +00:09:04.000 --> 00:09:06.000 +replace the first `foo' by this + +00:09:06.000 --> 00:09:09.000 +anonymous function here, it would replace + +00:09:09.000 --> 00:09:11.000 +the second `foo' by the value of `foo' as a + +00:09:11.000 --> 00:09:13.000 +variable, that is 42, + +00:09:13.000 --> 00:09:16.000 +and it would evaluate this, and the + +00:09:16.000 --> 00:09:20.000 +result would be 420. + +00:09:20.000 --> 00:09:23.000 +So, again, we used to have this slogan + +00:09:23.000 --> 00:09:26.000 +here, "anyone can learn Lisp in one day"... + +00:09:26.000 --> 00:09:28.000 +but now this is gone. + +00:09:28.000 --> 00:09:30.000 +Let me show... let me talk + +00:09:30.000 --> 00:09:34.000 +a bit more about why... + +00:09:34.000 --> 00:09:36.000 +the title of this slide is + +00:09:36.000 --> 00:09:38.000 +"Lambdas for beginners broken"... + +00:09:38.000 --> 00:09:41.000 +if we run this, as I've shown + +00:09:41.000 --> 00:09:43.000 +in the previous slide... + +00:09:43.000 --> 00:09:45.000 +in the old style, in old Emacses, + +00:09:45.000 --> 00:09:47.000 +the result of (symbol-function 'foo) + +00:09:47.000 --> 00:09:49.000 +would be this anonymous function here... + +00:09:49.000 --> 00:09:54.000 +and now we get this strange thing here. + +00:09:54.000 --> 00:09:58.000 +So, this is an "old-style lambda", + +00:09:58.000 --> 00:10:02.000 +this is a "vector-like lambda", + +00:10:02.000 --> 00:10:05.000 +and until the middle of 2024 + +00:10:05.000 --> 00:10:08.000 +beginners could learn a lot of Lisp + +00:10:08.000 --> 00:10:11.000 +by thinking only in terms of + +00:10:11.000 --> 00:10:13.000 +objects like these... + +00:10:13.000 --> 00:10:15.000 +this is a function and this + +00:10:15.000 --> 00:10:17.000 +is an anonymous function, and + +00:10:17.000 --> 00:10:20.000 +they would learn how to draw cons cell + +00:10:20.000 --> 00:10:23.000 +diagrams like this thing here and this + +00:10:23.000 --> 00:10:25.000 +thing here... + +00:10:25.000 --> 00:10:27.000 +they would think on lists as + +00:10:27.000 --> 00:10:29.000 +being these trees here, and they + +00:10:29.000 --> 00:10:32.000 +would be able to understand a lot of + +00:10:32.000 --> 00:10:35.000 +Lisp just by thinking in these terms... + +00:10:35.000 --> 00:10:39.000 +and then vector-like lambdas started + +00:10:39.000 --> 00:10:43.000 +to appear in many places... and if we use + +00:10:43.000 --> 00:10:46.000 +"vector-like lambdas" in a wide sense, + +00:10:46.000 --> 00:10:50.000 +to mean all the new objects, + +00:10:50.000 --> 00:10:54.000 +these new objects, that are + +00:10:54.000 --> 00:10:56.000 +difficult to visualize... they also started + +00:10:56.000 --> 00:10:58.000 +to appear in many places. + +00:10:58.000 --> 00:11:01.000 +This is a continuation of the + +00:11:01.000 --> 00:11:04.000 +previous slide - this part here is a copy + +00:11:04.000 --> 00:11:06.000 +of things that were in the previous slide... + +00:11:06.000 --> 00:11:12.000 +before 2024 beginners could + +00:11:12.000 --> 00:11:17.000 +open black boxes like this... + +00:11:17.000 --> 00:11:20.000 +they could try to see what was in the + +00:11:20.000 --> 00:11:24.000 +function cell of the symbol `foo'... + +00:11:24.000 --> 00:11:27.000 +and they would see something elegant and + +00:11:27.000 --> 00:11:29.000 +mind-blowing... and they would start to love + +00:11:29.000 --> 00:11:31.000 +Lisp immediately. + +00:11:31.000 --> 00:11:33.000 +Now what they get - what they see - + +00:11:33.000 --> 00:11:35.000 +is a tiny part of a very complex structure + +00:11:35.000 --> 00:11:39.000 +that is very powerful but that is + +00:11:39.000 --> 00:11:41.000 +very difficult to understand... + +00:11:41.000 --> 00:11:44.000 +and now our beginners are overwhelmed + +00:11:44.000 --> 00:11:46.000 +instead of mind-blown. + +00:11:46.000 --> 00:11:48.000 +Note that I said "black box" here. + +00:11:48.000 --> 00:11:52.000 +Let me explain the term. + +00:11:52.000 --> 00:11:57.000 +We can open what's inside of `foo'... + +00:11:57.000 --> 00:11:59.000 +we can open `foo' to see the contents of + +00:11:59.000 --> 00:12:02.000 +the symbol `foo', and we can try to see + +00:12:02.000 --> 00:12:06.000 +what's in the function cell of the + +00:12:06.000 --> 00:12:08.000 +symbol `foo'... + +00:12:08.000 --> 00:12:10.000 +so we can open the box, but what we get + +00:12:10.000 --> 00:12:13.000 +is something very difficult to understand, + +00:12:13.000 --> 00:12:17.000 +and so I'm going to say that + +00:12:17.000 --> 00:12:21.000 +when this happens that box is black. + +00:12:21.000 --> 00:12:23.000 +It is not totally black - we can open open it - + +00:12:23.000 --> 00:12:26.000 +but we don't understand what is going on there, + +00:12:26.000 --> 00:12:30.000 +so we declare that that is black. + +00:12:30.000 --> 00:12:33.000 +And... when these things started to happen + +00:12:33.000 --> 00:12:38.000 +_I_ was overwhelmed - + +00:12:38.000 --> 00:12:40.000 +and in this video I'm going to pretend + +00:12:40.000 --> 00:12:44.000 +that I was not the only person + +00:12:44.000 --> 00:12:46.000 +that was overwhelmed + +00:12:46.000 --> 00:12:50.000 +by these new structures + +00:12:50.000 --> 00:12:52.000 +that are not so elegant + +00:12:52.000 --> 00:12:54.000 +as the ones that we had before. + +00:12:54.000 --> 00:12:56.000 +Anyway... + +00:12:56.000 --> 00:20:38.000 + + diff --git a/2025/info/modern-after.md b/2025/info/modern-after.md index ec312f71..4518aec2 100644 --- a/2025/info/modern-after.md +++ b/2025/info/modern-after.md @@ -1,7 +1,251 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [eduardoochs@gmail.com](mailto:eduardoochs@gmail.com?subject=Comment%20for%20EmacsConf%202023%20modern%3A%20Some%20problems%20of%20modernizing%20Emacs) +<div class="transcript transcript-mainVideo"><a name="modern-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""""" start="00:00:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Hi! My name is Eduardo Ochs. I'm the""" start="00:00:55.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""author of an Emacs package called eev and""" start="00:00:57.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the title of this video is""" start="00:01:00.000" video="mainVideo-modern" id="subtitle"]] +[[!template text=""""Some problems of modernizing Emacs".""" start="00:01:03.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Here is a summary of the main themes""" start="00:01:05.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""of this video. I'm going to talk mainly""" start="00:01:08.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""about these four things here. The first""" start="00:01:10.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""one is that Emacs has changed a lot in its""" start="00:01:12.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""recent versions, and now it has lots of""" start="00:01:15.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""types... so if we want to look under the""" start="00:01:18.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""hood and to understand what Emacs""" start="00:01:21.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""really does we are going to stumble on""" start="00:01:24.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""lots of types... and the""" start="00:01:27.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""current tree of classes and types""" start="00:01:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""looks like this... that is,""" start="00:01:34.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""is quite big.""" start="00:01:37.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""The second theme is that people used""" start="00:01:46.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""to say things like "Anyone can learn Lisp""" start="00:01:49.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""in one day"... I'm going to explain""" start="00:01:53.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this quote, and I'm also going to show""" start="00:01:56.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that now this is gone... anyway. This is a""" start="00:02:01.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""very short summary... details soon.""" start="00:02:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""I will also show how to display""" start="00:02:08.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""better "inner views" of Emacs objects...""" start="00:02:10.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""I'm going to Define what is an inner view,""" start="00:02:13.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""of course.""" start="00:02:16.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""The main trick is that we are going""" start="00:02:18.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""to use one of the ways of displaying""" start="00:02:20.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""internal objects, that is the `cl-print'""" start="00:02:24.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""family of functions, for example,""" start="00:02:29.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""`cl-prin1-to-string', and here are some""" start="00:02:32.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""examples of the kind of output that we""" start="00:02:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""are going to see...""" start="00:02:37.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""for example, if we run these two lines""" start="00:02:38.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""here the first line defines a function `foo'""" start="00:02:44.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and the second line sets `o' to the""" start="00:02:47.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""internal view of the definition of `foo'.""" start="00:02:52.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""In older Emacses `o' would be just a""" start="00:02:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""list that looks... that would look very""" start="00:02:59.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""similar to this line here... but in newer""" start="00:03:02.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Emacses the result of this - I mean, the""" start="00:03:05.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the contents of `o' is this thing here,""" start="00:03:09.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that looks quite different""" start="00:03:12.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""from this definition.""" start="00:03:15.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""So, in older Emacses""" start="00:03:18.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the contents of the""" start="00:03:21.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""function cell of `o'...""" start="00:03:25.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""sorry, of the function cell of `foo',""" start="00:03:28.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""would be an "old-style lambda",""" start="00:03:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that would be just a list like this...""" start="00:03:32.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and in newer Emacses uh the contents of O would""" start="00:03:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""be a "vector-like lambda"... look for the""" start="00:03:39.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""square brackets here - this is a""" start="00:03:42.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""vector, but it is preceded by a hash sign.""" start="00:03:44.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""So this is what we call""" start="00:03:47.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""a "vector-like lambda",""" start="00:03:49.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and vector-like lambas do not""" start="00:03:51.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""have a canonical printed representation -""" start="00:03:53.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""they have at least two semicanonical""" start="00:03:55.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""printed representations...""" start="00:03:57.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""The first semicanonical""" start="00:03:59.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""printed representation is this one, that is""" start="00:04:01.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""generated by a family of functions with""" start="00:04:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""names like `prin1'...""" start="00:04:07.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and the second semicanonical printed""" start="00:04:09.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""representation is like this -""" start="00:04:13.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""it looks like a list...""" start="00:04:17.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""it looks somewhat like this definition""" start="00:04:20.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""of `foo' here, but it has this""" start="00:04:23.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""`:dynbind' symbol here...""" start="00:04:27.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and it turns out that when we use""" start="00:04:29.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the `cl-print' family of functions we can""" start="00:04:32.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""reconfigure how things are printed...""" start="00:04:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and I'm going to show several interesting""" start="00:04:37.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""ways of reconfiguring how lambdas are printed,""" start="00:04:40.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and one of the ways is going to""" start="00:04:47.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""be like this.""" start="00:04:49.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""We can also use the `cl-print'""" start="00:04:52.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""functions with my indentation tricks to""" start="00:04:56.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""to display how types, or classes, are""" start="00:04:59.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""viewed internally by Emacs, and this is a""" start="00:05:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""big example...""" start="00:05:07.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""This is what Emacs considers as being""" start="00:05:10.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the definition of the type""" start="00:05:14.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""`cl-structure-class',""" start="00:05:16.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""class and it is this big thing here.""" start="00:05:18.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""I edited it very lightly...""" start="00:05:21.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""I just uh deleted some line breaks here.""" start="00:05:24.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""And another thing that I want to to""" start="00:05:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""explain is that Emacs""" start="00:05:33.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""has some help functions that""" start="00:05:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""I have never liked...""" start="00:05:37.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""for most people they are good enough,""" start="00:05:39.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""but for me they aren't... they...""" start="00:05:41.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""uh, well - I'm going to say""" start="00:05:44.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""more about this later...""" start="00:05:48.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and, for example,""" start="00:05:50.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""if we want a description of what is""" start="00:05:52.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this type here, that we just saw in""" start="00:05:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""its internal view here...""" start="00:05:58.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""we can run either `describe-type'""" start="00:06:00.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""or my variant of `describe-type',""" start="00:06:02.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and we get a help buffer""" start="00:06:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that looks like this, in which""" start="00:06:07.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""these blue things that are underlined""" start="00:06:10.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""are "buttons", in the classical sense...""" start="00:06:13.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""you can click on these buttons, or type""" start="00:06:15.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""RET on these buttons, and you will be""" start="00:06:17.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""taken to another help page, that is""" start="00:06:19.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""generated dynamically...""" start="00:06:22.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and you can navigate back and forth...""" start="00:06:24.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and well, whatever...""" start="00:06:28.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and I'm going to explain my""" start="00:06:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""problems with these kinds of help buffers""" start="00:06:33.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and what I'm trying to do to""" start="00:06:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""overcome these problems...""" start="00:06:37.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""One of my slogans in this video""" start="00:06:41.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""is going to be this one:""" start="00:06:43.000" video="mainVideo-modern" id="subtitle"]] +[[!template text=""""Anyone can learn Lisp in one day".""" start="00:06:43.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this is a part of a bigger quote""" start="00:06:45.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that I took from a keynote presentation""" start="00:06:49.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""by Abelson and Sussman, who""" start="00:06:51.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""are two dinosaurs of Computer Science...""" start="00:06:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Here is the full quote:""" start="00:06:58.000" video="mainVideo-modern" id="subtitle"]] +[[!template text=""""Anyone can learn Lisp in one day -""" start="00:07:00.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""except that if they already know Fortran""" start="00:07:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""then it would take three days."""" start="00:07:06.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""This is a frame of the video...""" start="00:07:11.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""By the way I am going to to add""" start="00:07:24.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this... "and if the person is starting""" start="00:07:28.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""with Doom Emacs then it would take 5 years."""" start="00:07:32.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""why? I'm going to explain why.""" start="00:07:34.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""This is how Emacs used to be.""" start="00:07:39.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""If we execute these two expressions here""" start="00:07:43.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the first one... sorry, each symbol can""" start="00:07:46.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""have two "values",""" start="00:07:51.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""one is its "value as a variable"""" start="00:07:53.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and another one is its "value as a function"...""" start="00:07:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and if we run this we store 42""" start="00:07:58.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""in the "value cell" of the symbol `foo', and""" start="00:08:02.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""if we run this defun here it stores a""" start="00:08:07.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""certain anonymous function in the""" start="00:08:11.000" video="mainVideo-modern" id="subtitle"]] +[[!template text=""""function cell" of the symbol `foo'...""" start="00:08:14.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and in Emacs, until some time ago""" start="00:08:18.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""if we did that and and if we ran""" start="00:08:22.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this expression here the result""" start="00:08:27.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""would be 42,""" start="00:08:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""because of this line here, and if we""" start="00:08:31.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""ran this line here the result would be""" start="00:08:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the anonymous function corresponding to""" start="00:08:37.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this defun here...""" start="00:08:40.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""but now this has changed...""" start="00:08:41.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the result of this thing here is this""" start="00:08:45.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""vector-like lambda here - but that doesn't""" start="00:08:48.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""matter much now...""" start="00:08:51.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""So, until some time ago""" start="00:08:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""if we did that and if we ran""" start="00:08:56.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this expression here, (foo foo)...""" start="00:08:58.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Emacs would do this: it would""" start="00:09:01.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""replace the first `foo' by this""" start="00:09:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""anonymous function here, it would replace""" start="00:09:06.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the second `foo' by the value of `foo' as a""" start="00:09:09.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""variable, that is 42,""" start="00:09:11.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and it would evaluate this, and the""" start="00:09:13.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""result would be 420.""" start="00:09:16.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""So, again, we used to have this slogan""" start="00:09:20.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""here, "anyone can learn Lisp in one day"...""" start="00:09:23.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""but now this is gone.""" start="00:09:26.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Let me show... let me talk""" start="00:09:28.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""a bit more about why...""" start="00:09:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the title of this slide is""" start="00:09:34.000" video="mainVideo-modern" id="subtitle"]] +[[!template text=""""Lambdas for beginners broken"...""" start="00:09:36.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""if we run this, as I've shown""" start="00:09:38.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""in the previous slide...""" start="00:09:41.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""in the old style, in old Emacses,""" start="00:09:43.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the result of (symbol-function 'foo)""" start="00:09:45.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""would be this anonymous function here...""" start="00:09:47.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and now we get this strange thing here.""" start="00:09:49.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""So, this is an "old-style lambda",""" start="00:09:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this is a "vector-like lambda",""" start="00:09:58.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and until the middle of 2024""" start="00:10:02.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""beginners could learn a lot of Lisp""" start="00:10:05.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""by thinking only in terms of""" start="00:10:08.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""objects like these...""" start="00:10:11.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""this is a function and this""" start="00:10:13.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""is an anonymous function, and""" start="00:10:15.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""they would learn how to draw cons cell""" start="00:10:17.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""diagrams like this thing here and this""" start="00:10:20.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""thing here...""" start="00:10:23.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""they would think on lists as""" start="00:10:25.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""being these trees here, and they""" start="00:10:27.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""would be able to understand a lot of""" start="00:10:29.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Lisp just by thinking in these terms...""" start="00:10:32.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and then vector-like lambdas started""" start="00:10:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""to appear in many places... and if we use""" start="00:10:39.000" video="mainVideo-modern" id="subtitle"]] +[[!template text=""""vector-like lambdas" in a wide sense,""" start="00:10:43.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""to mean all the new objects,""" start="00:10:46.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""these new objects, that are""" start="00:10:50.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""difficult to visualize... they also started""" start="00:10:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""to appear in many places.""" start="00:10:56.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""This is a continuation of the""" start="00:10:58.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""previous slide - this part here is a copy""" start="00:11:01.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""of things that were in the previous slide...""" start="00:11:04.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""before 2024 beginners could""" start="00:11:06.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""open black boxes like this...""" start="00:11:12.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""they could try to see what was in the""" start="00:11:17.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""function cell of the symbol `foo'...""" start="00:11:20.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and they would see something elegant and""" start="00:11:24.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""mind-blowing... and they would start to love""" start="00:11:27.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Lisp immediately.""" start="00:11:29.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Now what they get - what they see -""" start="00:11:31.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""is a tiny part of a very complex structure""" start="00:11:33.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that is very powerful but that is""" start="00:11:35.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""very difficult to understand...""" start="00:11:39.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and now our beginners are overwhelmed""" start="00:11:41.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""instead of mind-blown.""" start="00:11:44.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Note that I said "black box" here.""" start="00:11:46.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Let me explain the term.""" start="00:11:48.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""We can open what's inside of `foo'...""" start="00:11:52.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""we can open `foo' to see the contents of""" start="00:11:57.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""the symbol `foo', and we can try to see""" start="00:11:59.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""what's in the function cell of the""" start="00:12:02.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""symbol `foo'...""" start="00:12:06.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""so we can open the box, but what we get""" start="00:12:08.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""is something very difficult to understand,""" start="00:12:10.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and so I'm going to say that""" start="00:12:13.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""when this happens that box is black.""" start="00:12:17.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""It is not totally black - we can open open it -""" start="00:12:21.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""but we don't understand what is going on there,""" start="00:12:23.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""so we declare that that is black.""" start="00:12:26.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""And... when these things started to happen""" start="00:12:30.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""_I_ was overwhelmed -""" start="00:12:33.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""and in this video I'm going to pretend""" start="00:12:38.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that I was not the only person""" start="00:12:40.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that was overwhelmed""" start="00:12:44.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""by these new structures""" start="00:12:46.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""that are not so elegant""" start="00:12:50.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""as the ones that we had before.""" start="00:12:52.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""Anyway...""" start="00:12:54.000" video="mainVideo-modern" id="subtitle"]] +[[!template text="""""" start="00:12:56.000" video="mainVideo-modern" id="subtitle"]] + +</div>Questions or comments? Please e-mail [eduardoochs@gmail.com](mailto:eduardoochs@gmail.com?subject=Comment%20for%20EmacsConf%202023%20modern%3A%20Some%20problems%20of%20modernizing%20Emacs) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/modern-before.md b/2025/info/modern-before.md index a2464cda..c827ca16 100644 --- a/2025/info/modern-before.md +++ b/2025/info/modern-before.md @@ -8,12 +8,12 @@ The following image shows where the talk is in the schedule for Sun 2025-12-07. Format: 20-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen> Etherpad: <https://pad.emacsconf.org/2025-modern> Etherpad: <https://pad.emacsconf.org/2025-modern> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Waiting for video from speaker +Status: Now playing on the conference livestream <div>Times in different time zones:</div><div class="times" start="2025-12-07T14:10:00Z" end="2025-12-07T14:30:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~9:10 AM - 9:30 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~8:10 AM - 8:30 AM CST (US/Central)<br />Sunday, Dec 7 2025, ~7:10 AM - 7:30 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~6:10 AM - 6:30 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~2:10 PM - 2:30 PM UTC <br />Sunday, Dec 7 2025, ~3:10 PM - 3:30 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~4:10 PM - 4:30 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~7:40 PM - 8:00 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~10:10 PM - 10:30 PM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~11:10 PM - 11:30 PM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> - +<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-modern">Open Etherpad</a></li><li><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--original.mp4">Download --original.mp4 (35MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--original.vtt">Download --original.vtt</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file |
