summaryrefslogtreecommitdiffstats
path: root/2024
diff options
context:
space:
mode:
authorEmacsConf <emacsconf-org@gnu.org>2024-12-08 09:50:54 -0500
committerEmacsConf <emacsconf-org@gnu.org>2024-12-08 09:50:54 -0500
commit99170a2d2028cd466961cf59cb184c85829973e6 (patch)
treeeeeb48ab126fba9e082629215a2730aefbc5a810 /2024
parent7987b2f3b0c3f8f80e7af8298cf854e75e2c4853 (diff)
downloademacsconf-wiki-99170a2d2028cd466961cf59cb184c85829973e6.tar.xz
emacsconf-wiki-99170a2d2028cd466961cf59cb184c85829973e6.zip
Automated commit
Diffstat (limited to '')
-rw-r--r--2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt1007
-rw-r--r--2024/info/blee-before.md2
-rw-r--r--2024/info/guile-after.md469
-rw-r--r--2024/info/hyperbole-before.md2
-rw-r--r--2024/info/learning-before.md2
-rw-r--r--2024/info/links-before.md6
-rw-r--r--2024/info/literate-before.md2
-rw-r--r--2024/info/pgmacs-before.md2
-rw-r--r--2024/info/regex-before.md2
-rw-r--r--2024/info/sharing-before.md2
-rw-r--r--2024/info/students-before.md2
-rw-r--r--2024/info/sun-close-before.md2
-rw-r--r--2024/info/sun-open-before.md2
-rw-r--r--2024/info/transducers-before.md2
-rw-r--r--2024/schedule-details.md15
15 files changed, 898 insertions, 621 deletions
diff --git a/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt
index b4e7cdc8..1c952084 100644
--- a/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt
+++ b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--main.vtt
@@ -1,601 +1,808 @@
-WEBVTT captioned by sachac and robin
+WEBVTT captioned by anush
-00:00:00.000 --> 00:00:03.839
-Hello everyone. I'm Robin Templeton, and I'm going to talk
+00:00.000 --> 00:03.066
+Hello everyone, I'm Robin Templeton,
-00:00:03.840 --> 00:00:07.919
-about Emacs Beguiled and recent progress on the Guile-Emacs
+00:03.083 --> 00:05.750
+and I'm going to talk about Emacs Beguiled
-00:00:07.920 --> 00:00:13.919
-project.
+00:05.766 --> 00:13.866
+and recent progress on the Guile Emacs project.
-00:00:13.920 --> 00:00:16.839
-First of all, if you're not familiar with Guile, it's an
+00:13.883 --> 00:16.433
+First of all, if you're not familiar with Guile,
-00:00:16.840 --> 00:00:20.239
-implementation of the Scheme programming language, which
+00:16.450 --> 00:19.716
+it's an implementation of the Scheme programming language,
-00:00:20.240 --> 00:00:24.799
-is a dialect of Lisp, and in the same family as Emacs Lisp, and
+00:19.733 --> 00:22.150
+which is a dialect of Lisp,
-00:00:24.800 --> 00:00:28.759
-Guile is GNU's official extension language. The goal of
+00:22.166 --> 00:24.550
+and in the same family as Emacs Lisp,
-00:00:28.760 --> 00:00:32.679
-the Guile-Emacs project is to use Guile as the basis for
+00:24.566 --> 00:28.150
+and Guile is GNU's official extension language.
-00:00:32.680 --> 00:00:37.599
-Emacs's Lisp support. It has two main components: a new
+00:28.166 --> 00:30.400
+The goal of the Guile Emacs project
-00:00:37.600 --> 00:00:41.919
-Emacs Lisp compiler built on top of Guile, and a variant of
+00:30.400 --> 00:34.950
+is to use Guile as the basis for Emacs's Lisp support.
-00:00:41.920 --> 00:00:45.199
-Emacs in which the built-in Lisp implementation is
+00:34.966 --> 00:37.116
+It has two main components:
-00:00:45.200 --> 00:00:50.239
-entirely replaced with Guile Elisp. We expect the
+00:37.133 --> 00:41.033
+a new Emacs Lisp compiler built on top of Guile,
-00:00:50.240 --> 00:00:53.439
-combination of these two projects to have several
+00:41.050 --> 00:42.550
+and a variant of Emacs
-00:00:53.440 --> 00:00:57.999
-benefits. One is improved performance. Another is
+00:42.566 --> 00:45.316
+in which the built-in Lisp implementation
-00:00:58.000 --> 00:01:03.839
-increased expressiveness for Elisp and making it easier to
+00:45.333 --> 00:49.716
+is entirely replaced with Guile Elisp.
-00:01:03.840 --> 00:01:07.839
-extend and experiment with the language. Finally, it
+00:49.733 --> 00:52.800
+We expect the combination of these two projects
-00:01:07.840 --> 00:01:13.079
-will reduce Emacs's reliance on C for two reasons. Guile will
+00:52.800 --> 00:57.350
+to have several benefits. One is improved performance.
-00:01:13.080 --> 00:01:16.959
-be responsible for the language implementation, so Emacs
+00:57.366 --> 01:00.200
+Another is increased expressiveness for Elisp
-00:01:16.960 --> 00:01:21.559
-will no longer have to include a Lisp interpreter. It
+01:00.200 --> 01:04.350
+and making it easier to extend
-00:01:21.560 --> 00:01:25.759
-will also become possible to implement much more of Emacs in
+01:04.366 --> 01:07.200
+and experiment with the language.
-00:01:25.760 --> 00:01:30.279
-Lisp than is currently feasible. Of course, this raises
+01:07.200 --> 01:08.550
+Finally, it will reduce
-00:01:30.280 --> 00:01:34.119
-the question of why Guile is suitable for this project. And
+01:08.566 --> 01:12.316
+Emacs's reliance on C for two reasons.
-00:01:34.120 --> 00:01:38.079
-we chose Guile for a few reasons. Guile is primarily a Scheme
+01:12.333 --> 01:16.316
+Guile will be responsible for the language implementation,
-00:01:38.080 --> 00:01:41.119
-implementation, but it also has built-in support for
+01:16.333 --> 01:21.350
+so Emacs will no longer have to include a Lisp interpreter.
-00:01:41.120 --> 00:01:44.399
-multiple languages using its compiler tower. To add
+01:21.366 --> 01:23.200
+It will also become possible
-00:01:44.400 --> 00:01:50.079
-support for a new language to Guile, you only have to write a
+01:23.200 --> 01:25.666
+to implement much more of Emacs in Lisp
-00:01:50.080 --> 00:01:53.399
-compiler from the source language to Tree-IL, which is
+01:25.683 --> 01:29.233
+than is currently feasible.
-00:01:53.400 --> 00:01:57.439
-essentially a low-level, minimal representation of
+01:29.250 --> 01:31.116
+Of course, this raises the question of
-00:01:57.440 --> 00:02:02.479
-Scheme. All of Guile's compiler optimizations occur at the
+01:31.133 --> 01:34.033
+why Guile is suitable for this product.
-00:02:02.480 --> 00:02:07.599
-Tree-IL layer or lower, so you don't need to worry about the
+01:34.050 --> 01:36.666
+And we chose Guile for a few reasons.
-00:02:07.600 --> 00:02:10.159
-lower-level details of the compiler when initially
+01:36.683 --> 01:39.400
+Guile is primarily a Scheme implementation,
-00:02:10.160 --> 00:02:14.639
-implementing your language. Guile also has some Lisp
+01:39.400 --> 01:42.150
+but it also has built-in support for multiple languages
-00:02:14.640 --> 00:02:18.879
-features that are very rare in Scheme implementations. For
+01:42.166 --> 01:43.466
+using its compiler tower.
-00:02:18.880 --> 00:02:22.599
-example, it has a nil value that counts as both false and an
+01:43.483 --> 01:46.866
+To add support for a new language to Guile,
-00:02:22.600 --> 00:02:27.759
-empty list, just like in Elisp, and it also has a version of
+01:46.883 --> 01:50.066
+You only have to write a compiler
-00:02:27.760 --> 00:02:32.319
-the Common Lisp Object System and its metaobject protocol,
+01:50.083 --> 01:52.550
+from the source language to TRIAL[??],
-00:02:32.320 --> 00:02:37.239
-which is called GOOPS.
+01:52.566 --> 01:55.800
+which is essentially a low-level,
-00:02:37.240 --> 00:02:42.199
-The idea of Guile-Emacs has a pretty long history, going back
+01:55.800 --> 01:58.866
+minimal representation of Scheme.
-00:02:42.200 --> 00:02:45.319
-at least three decades. There have been about half a dozen
+01:58.883 --> 02:01.800
+All of Guile's compiler optimizations
-00:02:45.320 --> 00:02:48.519
-previous implementation attempts. But the current
+02:01.800 --> 02:04.433
+occur at the TRIAL[??] layer or lower,
-00:02:48.520 --> 00:02:51.519
-iteration began with a series of six Summer of Code
+02:04.450 --> 02:06.033
+so you don't need to worry
-00:02:51.520 --> 00:02:56.279
-internships: Daniel Kraft's in 2009, and then my
+02:06.050 --> 02:09.633
+about the lower-level details of the compiler
-00:02:56.280 --> 00:03:02.519
-internships from 2010 to 2014. My basic implementation
+02:09.650 --> 02:12.350
+when initially implementing your language.
-00:03:02.520 --> 00:03:06.319
-strategy was pretty straightforward. I implemented a core
+02:12.366 --> 02:14.633
+Guile also has some Lisp features
-00:03:06.320 --> 00:03:09.679
-subset of Elisp, which was enough to run some batch mode
+02:14.650 --> 02:18.316
+that are very rare in schema implementations.
-00:03:09.680 --> 00:03:15.399
-programs outside of Emacs. In Emacs, I modified the garbage
+02:18.333 --> 02:20.033
+For example, it has a nil value
-00:03:15.400 --> 00:03:19.679
-collector and the data structures for Lisp objects to use
+02:20.050 --> 02:23.916
+that counts as both false and an empty list,
-00:03:19.680 --> 00:03:24.679
-their libguile equivalents. I replaced Emacs' Lisp
+02:23.933 --> 02:25.633
+just like an Elisp,
-00:03:24.680 --> 00:03:32.199
-evaluator with the one provided by Guile Elisp.
+02:25.650 --> 02:30.466
+and it also has a version of the Common Lisp object system
-00:03:32.200 --> 00:03:35.919
-After a little over a year of work, at the end of the 2014
+02:30.483 --> 02:37.200
+and its metoptic[??] protocol, which is called GOOPS.
-00:03:35.920 --> 00:03:41.079
-internship, I ended up with a fully functional prototype of
+02:37.200 --> 02:40.150
+The idea of Guile Emacs has a pretty long history.
-00:03:41.080 --> 00:03:46.039
-Guile-Emacs. It used Guile Elisp alone as its Lisp
+02:40.166 --> 02:43.866
+going back at least three decades.
-00:03:46.040 --> 00:03:53.319
-implementation and was completely compatible with Emacs
+02:43.883 --> 02:44.550
+There have been about
-00:03:53.320 --> 00:03:57.559
-functionality and with external extensions. One caveat
+02:44.566 --> 02:48.000
+half a dozen previous implementation attempts.
-00:03:57.560 --> 00:04:01.399
-was that performance was pretty bad, because I was focused
+02:48.000 --> 02:49.950
+But the current iteration began with
-00:04:01.400 --> 00:04:05.639
-on correctness, as well as ease of integration with the
+02:49.966 --> 02:52.866
+a series of six Summer of Code internships,
-00:04:05.640 --> 00:04:10.559
-Emacs C code. But it was nonetheless a major milestone for
+02:52.883 --> 02:56.033
+Daniel Kraft's[??] in 2009,
-00:04:10.560 --> 00:04:15.759
-the project. Let's take just a moment to look at
+02:56.050 --> 03:01.200
+and then my internships from 2010 to 2014.
-00:04:15.760 --> 00:04:19.599
-Guile-Elisp.
+03:01.200 --> 03:03.000
+My basic implementation strategy
-00:04:19.600 --> 00:04:23.879
-For starters, we have access to Guile modules. If we call
+03:03.000 --> 03:05.316
+was pretty straightforward.
-00:04:23.880 --> 00:04:26.959
-Guile's <i>version</i> function, we can see that we're running
+03:05.333 --> 03:07.466
+I implemented a core subset of Elisp,
-00:04:26.960 --> 00:04:33.879
-under Guile 3.0. We have access to some of the numeric tower via
+03:07.483 --> 03:10.400
+which was enough to run some batch mode programs
-00:04:33.880 --> 00:04:41.279
-the arithmetic functions. We also have multiple values. We
+03:10.400 --> 03:12.833
+outside of Emacs.
-00:04:41.280 --> 00:04:45.599
-have to be careful to use Guile's <i>values</i> procedure here, not
+03:12.850 --> 03:15.266
+In Emacs, I modified the garbage collector
-00:04:45.600 --> 00:04:48.839
-the CL library's, but you can see that this works properly
+03:15.283 --> 03:18.600
+and the data structures for Lisp objects
-00:04:48.840 --> 00:04:52.879
-rather than being an emulation. Finally, we have tail
+03:18.600 --> 03:23.033
+to use their libgal equivalents.
-00:04:52.880 --> 00:04:57.999
-call elimination. Naturally, we're going to use factorial
+03:23.050 --> 03:26.950
+I replaced Emacs' Lisp evaluator
-00:04:58.000 --> 00:05:07.159
-to demonstrate it. If <i>n</i> is zero, return the answer, else
+03:26.966 --> 03:32.200
+with the one provided by guile-elisp.[??]
-00:05:07.160 --> 00:05:14.199
-recurse with <i>n</i> less one and <i>n</i> times <i>a</i>.
+03:32.200 --> 03:34.033
+After a little over a year of work
-00:05:14.200 --> 00:05:17.119
-Of course, this definition works correctly, but it gets
+03:34.050 --> 03:37.950
+at the end of the 2014 internship,
-00:05:17.120 --> 00:05:21.759
-more interesting if we communicate the answer with an
+03:37.966 --> 03:44.316
+I ended up with a fully functional prototype of Guile Emacs.
-00:05:21.760 --> 00:05:27.759
-error,
+03:44.333 --> 03:48.916
+It used Guile Elisp alone as its Lisp implementation
-00:05:27.760 --> 00:05:32.359
-in order to look at a backtrace. You can see here that there are no
+03:48.933 --> 03:53.916
+and was completely compatible with Emacs functionality
-00:05:32.360 --> 00:05:37.839
-calls to <i>fact</i> visible in between the request to evaluate and
+03:53.933 --> 03:56.716
+and with external extensions.
-00:05:37.840 --> 00:05:42.199
-the error communicating the answer. That's because
+03:56.733 --> 03:59.433
+One caveat was that performance was pretty bad,
-00:05:42.200 --> 00:05:53.319
-this tail call has been optimized into effectively a goto.
+03:59.450 --> 04:03.033
+because I was focused on correctness,
-00:05:53.320 --> 00:05:55.759
-This is essential for any kind of serious functional
+04:03.050 --> 04:07.600
+as well as ease of integration with the Emacs C code.
-00:05:55.760 --> 00:06:00.279
-programming.
+04:07.600 --> 04:11.550
+But it was nonetheless a major milestone for the project.
-00:06:00.280 --> 00:06:05.359
-That's a peek at Guile-Elisp. In 2015, I left university
+04:11.566 --> 04:19.600
+Let's take just a moment to look at guile-elisp.
-00:06:05.360 --> 00:06:09.479
-to go work on web technologies, and the project was dormant
+04:19.600 --> 04:23.233
+For starters, we have access to guile modules.
-00:06:09.480 --> 00:06:14.679
-for a very long time. But that's been changing recently.
+04:23.250 --> 04:25.116
+If we call guile's version function,
-00:06:14.680 --> 00:06:17.039
-During the last few months, I've been working with Larry
+04:25.133 --> 04:30.516
+we can see that we're running under guile 3.0,
-00:06:17.040 --> 00:06:23.399
-Valkama to rebase Guile-Emacs onto the development branch
+04:30.533 --> 04:33.233
+have access to some of the numeric tower
-00:06:23.400 --> 00:06:28.319
-of upstream Emacs, including the past decade's worth of
+04:33.250 --> 04:39.516
+via the arithmetic functions. We also have multiple values.
-00:06:28.320 --> 00:06:33.399
-upstream development. What we've ended up with is a series
+04:39.533 --> 04:43.950
+We have to be careful to use Guile's values procedure here,
-00:06:33.400 --> 00:06:38.839
-of rebases onto different versions of Emacs. The older ones
+04:43.966 --> 04:46.666
+not the CL libraries,
-00:06:38.840 --> 00:06:44.239
-tend to work pretty well. The newer ones have increasingly
+04:46.683 --> 04:48.833
+but you can see that this works properly
-00:06:44.240 --> 00:06:49.799
-bad problems where they haven't been properly adjusted for
+04:48.850 --> 04:51.550
+rather than being an emulation.
-00:06:49.800 --> 00:06:55.599
-changes in the Emacs implementation. But we do have by now a
+04:51.566 --> 04:54.033
+Finally, we have tail call elimination.
-00:06:55.600 --> 00:06:58.919
-version of Emacs 30 which boots correctly and can be used for
+04:54.050 --> 05:02.866
+Naturally, we're going to use factorial to demonstrate it.
-00:06:58.920 --> 00:07:04.959
-interactive debugging, as well as the ability to bisect the
+05:02.883 --> 05:05.633
+If n is zero, return the answer,
-00:07:04.960 --> 00:07:08.919
-revisions of Emacs and find out where regressions were
+05:05.650 --> 05:14.266
+else recurse with n less one and n times a.
-00:07:08.920 --> 00:07:13.199
-introduced. Our immediate goal is of course to complete
+05:14.283 --> 05:16.150
+Of course this definition works correctly,
-00:07:13.200 --> 00:07:19.719
-the rebase. At the same time, we want to improve Guile Elisp's
+05:16.166 --> 05:18.950
+but it gets more interesting
-00:07:19.720 --> 00:07:22.799
-performance to at least be competitive with ordinary Emacs
+05:18.966 --> 00:05:25.000
+if we communicate the answer with an error.
-00:07:22.800 --> 00:07:29.279
-Lisp. Just to characterize the performance situation,
+00:05:25.100 --> 05:29.633
+or to look at a backtrace.
-00:07:29.280 --> 00:07:34.479
-Guile Elisp is usually about half as fast as ordinary Elisp,
+05:29.650 --> 05:32.350
+You can see here that there are
-00:07:34.480 --> 00:07:37.839
-while Guile Scheme is quite often an order of magnitude
+05:32.366 --> 05:35.516
+no calls to fact visible in between
-00:07:37.840 --> 00:07:43.319
-faster than ordinary Elisp, and that's based on micro
+05:35.533 --> 05:37.833
+the request to evaluate
-00:07:43.320 --> 00:07:47.799
-benchmarks like the Gabriel benchmarks. But there's
+05:37.850 --> 05:42.200
+and the error communicating the answer.
-00:07:47.800 --> 00:07:52.319
-clearly a lot of room to improve our compiler's output.
+05:42.200 --> 05:44.200
+That's because this tail call
-00:07:52.320 --> 00:07:57.759
-If you want to mark your calendars, we're expecting to have a
+05:44.200 --> 05:48.350
+has been optimized into effectively a goto.
-00:07:57.760 --> 00:08:04.199
-usable version of Guile-Emacs 30 out sometime next spring. We're
+05:48.366 --> 05:54.916
+This is essential for any kind
-00:08:04.200 --> 00:08:06.799
-also going to put some effort into either extracting old
+05:54.933 --> 00:05:59.916
+of serious functional programming.
-00:08:06.800 --> 00:08:13.599
-work or doing new work that could be contributed upstream.
+00:06:00.116 --> 06:03.033
+That's a peek at guile-elisp.
-00:08:13.600 --> 00:08:17.559
-On the Guile side, we'll probably start out with optimizing
+06:03.050 --> 06:08.066
+In 2015, I left university to go work on web technologies,
-00:08:17.560 --> 00:08:22.839
-the dynamic binding facilities, which are used very seldom
+06:08.083 --> 06:11.316
+and the project was dormant for a very long time.
-00:08:22.840 --> 00:08:27.199
-in Scheme, but are used all the time in traditional Lisp
+06:11.333 --> 06:13.433
+But that's been changing recently.
-00:08:27.200 --> 00:08:31.399
-dialects. On the Emacs side, we'll be working initially on
+06:13.450 --> 06:16.066
+During the last few months,
-00:08:31.400 --> 00:08:35.919
-abstracting away the details of the Lisp implementation
+06:16.083 --> 06:17.633
+I've been working with Larry Valkama[??]
-00:08:35.920 --> 00:08:39.999
-where they're not relevant. And that will clean up the Emacs
+06:17.650 --> 06:20.716
+to rebase guile-emacs
-00:08:40.000 --> 00:08:44.279
-code base a bit. It'll make it easier to integrate Emacs and
+06:20.733 --> 06:24.833
+onto the development branch of upstream emacs,
-00:08:44.280 --> 00:08:49.919
-Guile Elisp. It will probably be helpful for anyone who
+06:24.850 --> 06:29.666
+including the past decade's worth of upstream development.
-00:08:49.920 --> 00:08:51.559
-is working on ordinary Elisp on their own.
+06:29.683 --> 00:06:33.967
+What we've ended up with is a series of
-00:08:51.560 --> 00:08:57.199
+00:06:34.267 --> 00:06:37.550
+rebases onto different versions of Emacs.
+
+06:37.566 --> 06:39.516
+The older ones tend to work pretty well.
+
+06:39.533 --> 06:46.866
+The newer ones have increasingly bad problems
+
+06:46.883 --> 06:49.800
+where they haven't been properly adjusted
+
+06:49.800 --> 06:52.200
+for changes in the Emacs implementation.
+
+06:52.200 --> 06:56.833
+but we do have by now a version of Emacs 30
+
+06:56.850 --> 06:57.800
+which boots correctly
+
+06:57.800 --> 06:59.833
+and can be used for interactive debugging,
+
+06:59.850 --> 07:06.150
+as well as the ability to bisect the revisions of Emacs
+
+07:06.166 --> 07:10.516
+and find out where regressions were introduced.
+
+07:10.533 --> 07:14.033
+Our immediate goal is of course to complete the rebase.
+
+07:14.050 --> 07:16.233
+At the same time,
+
+07:16.250 --> 07:20.633
+we want to improve Guile Elisp's performance
+
+07:20.650 --> 07:24.350
+to at least be competitive with ordinary Emacs Lisp.
+
+07:24.366 --> 07:29.266
+Just to characterize the performance situation,
+
+07:29.283 --> 07:32.750
+Guile Elisp is usually about half
+
+07:32.766 --> 07:34.466
+as fast as ordinary Elisp,
+
+07:34.483 --> 07:37.833
+while Guile Scheme is quite often
+
+07:37.850 --> 00:07:41.250
+an order of magnitude faster than ordinary Elisp,
+
+00:07:41.350 --> 07:43.916
+and that's based on micro benchmarks
+
+07:43.933 --> 00:07:46.133
+like the Gabriel[??] benchmarks.
+
+00:07:46.233 --> 00:07:50.900
+but there's clearly a lot of room
+
+00:07:50.900 --> 00:07:53.150
+to improve our compiler's output.
+
+00:07:53.350 --> 07:56.633
+If you want to mark your calendars,
+
+07:56.650 --> 08:00.150
+we're expecting to have a usable version of Guile Emacs 30
+
+08:00.166 --> 00:08:03.016
+out sometime next spring.
+
+00:08:03.116 --> 08:05.433
+We're also going to put some effort
+
+08:05.450 --> 00:08:09.000
+into either extracting old work
+
+00:08:09.100 --> 08:12.600
+or doing new work that could be contributed upstream.
+
+08:12.600 --> 00:08:16.650
+On the Guile side, we'll probably start out with
+
+00:08:16.750 --> 00:08:21.033
+optimizing the dynamic binding facilities,
+
+00:08:21.233 --> 08:23.433
+which are used very seldom in Scheme,
+
+08:23.450 --> 08:27.833
+but are used all the time in traditional Lisp dialects.
+
+08:27.850 --> 08:31.400
+On the Emacs side, we'll be working initially
+
+08:31.400 --> 08:35.316
+on abstracting away the details of the Lisp implementation
+
+08:35.333 --> 00:08:37.433
+where they're not relevant,
+
+00:08:37.533 --> 08:40.716
+And that will clean up the Emacs code base a bit.
+
+08:40.733 --> 08:45.000
+It'll make it easier to integrate Emacs and Guile Elisp.
+
+08:45.000 --> 08:47.916
+It will probably be helpful for anyone
+
+08:47.933 --> 08:51.550
+who is working on ordinary Elisp on their own.
+
+08:51.566 --> 08:57.200
We're also going to be adding new features to Emacs Lisp.
-00:08:57.200 --> 00:09:01.639
-We've seen a few of them already. The numeric tower, tail
+08:57.200 --> 08:59.316
+We've seen a few of them already.
+
+08:59.333 --> 09:02.633
+The new [??] tower, tail call optimization,
+
+09:02.650 --> 09:04.550
+common list compatibility.
+
+09:04.566 --> 09:07.950
+We're also going to provide access to Fibers,
+
+09:07.966 --> 09:12.466
+which is a guide library based on ideas from concurrent ML
+
+09:12.483 --> 09:15.716
+that provides much more powerful facilities
+
+09:15.733 --> 09:18.266
+for concurrent and parallel programming
+
+09:18.283 --> 00:09:24.566
+than what Emacs currently offers.
+
+00:09:24.666 --> 09:32.233
+This plan meets Guile Emacs' basic goals,
+
+09:32.250 --> 09:36.316
+and it's work that we could maybe get integrated upstream
+
+09:36.333 --> 00:09:38.100
+in a reasonable amount of time.
+
+00:09:38.200 --> 00:09:42.500
+But it's also worth considering what more we can do,
+
+00:09:42.600 --> 09:46.600
+and what effect Guile Emacs might have on Emacs
+
+09:46.600 --> 00:09:50.566
+if it becomes simply Emacs.
+
+00:09:50.666 --> 09:54.033
+For context, the amount of C code in Emacs
+
+09:54.050 --> 09:57.400
+has increased by around 50% in the last decade,
+
+09:57.400 --> 09:59.950
+and now it constitutes around a quarter of the code base.
+
+09:59.966 --> 10:06.400
+C can be a bit of a barrier
+
+10:06.400 --> 00:10:10.900
+to customizing and extending Emacs.
+
+00:10:11.000 --> 10:15.516
+For example, there are about 1500 C subroutines.
+
+10:15.533 --> 10:19.633
+Around 500 are used in C code,
+
+10:19.650 --> 10:23.150
+as well as available to Lisp code,
+
+10:23.166 --> 10:25.800
+and being written in C means
+
+10:25.800 --> 10:28.066
+that they can't be practically redefined.
+
+10:28.083 --> 10:34.433
+the use of C can become a barrier to extending Emacs
+
+10:34.450 --> 10:36.233
+or customizing its behavior.
+
+10:36.250 --> 10:39.200
+We might consider writing
+
+10:39.200 --> 00:10:42.816
+as much of Emacs as possible in Lisp.
+
+00:10:42.916 --> 10:46.033
+One way to speed up this process
+
+10:46.050 --> 10:49.400
+would be to provide a common Lisp implementation for Guile.
-00:09:01.640 --> 00:09:05.919
-call optimization, Common Lisp compatibility. We're also
+10:49.400 --> 10:54.833
+Note that between guile-elisp and guile-scheme,
-00:09:05.920 --> 00:09:10.359
-going to provide access to Fibers, which is a Guile library
+10:54.850 --> 10:57.516
+we have all of the essential ingredients
-00:09:10.360 --> 00:09:14.639
-based on ideas from Concurrent ML that provides much more
+10:57.533 --> 11:03.200
+for a Common Lisp environment. We can also share code
-00:09:14.640 --> 00:09:17.679
-powerful facilities for concurrent and parallel
+11:03.200 --> 00:11:06.016
+with other Common Lisp implementations
-00:09:17.680 --> 00:09:20.679
-programming than what Emacs currently offers.
+11:06.016 --> 11:10.200
+such as SBCL and SICL[??].
-00:09:20.680 --> 00:09:33.759
-This plan meets Guile-Emacs' basic goals, and it's work
+11:10.200 --> 11:13.800
+Overall, the duration of the project
-00:09:33.760 --> 00:09:36.879
-that we could maybe get integrated upstream in a reasonable
+11:13.800 --> 11:16.916
+will be better measured in months rather than years,
-00:09:36.880 --> 00:09:41.799
-amount of time. But it's also worth considering what more we
+11:16.933 --> 11:19.466
+despite Common Lisp's reputation
-00:09:41.800 --> 00:09:47.239
-can do, and what effect Guile-Emacs might have on Emacs if it
+11:19.483 --> 00:11:21.116
+for being a large language.
-00:09:47.240 --> 00:09:49.079
-becomes simply Emacs.
+00:11:21.216 --> 11:24.466
+This could have multiple uses, of course.
-00:09:49.080 --> 00:09:54.599
-For context, the amount of C code in Emacs has increased by
+11:24.483 --> 11:29.633
+It could be a model for future improvements to Elisp,
-00:09:54.600 --> 00:09:58.559
-around 50% in the last decade, and now it constitutes around
+11:29.650 --> 11:34.866
+because Elisp and CL can interact directly without problems.
-00:09:58.560 --> 00:10:06.399
-a quarter of the code base. C can be a bit of a barrier to
+11:34.883 --> 11:38.400
+and it would be very easy for Elisp
-00:10:06.400 --> 00:10:13.279
-customizing and extending Emacs. For example, there are
+11:38.400 --> 11:41.466
+to borrow language features from Common Lisp.
-00:10:13.280 --> 00:10:20.439
-about 1500 C subroutines. Around 500 are used in C code, as
+11:41.483 --> 11:46.600
+But for the purpose of a C to Lisp transition,
-00:10:20.440 --> 00:10:26.519
-well as available to Lisp code, and being written in C means
+11:46.600 --> 11:50.066
+it would also provide us with instant access
-00:10:26.520 --> 00:10:31.519
-that they can't be practically redefined. The use of C can
+11:50.083 --> 11:52.600
+to a huge number of high-quality libraries
-00:10:31.520 --> 00:10:35.839
-become a barrier to extending Emacs or customizing its
+11:52.600 --> 11:54.833
+for things that
-00:10:35.840 --> 00:10:40.479
-behavior. We might consider writing as much of Emacs as
+11:54.850 --> 11:58.116
+Guile is not necessarily equipped to deal with,
-00:10:40.480 --> 00:10:46.039
-possible in Lisp. One way to speed up this process would
+11:58.133 --> 12:01.350
+such as access to low-level Windows APIs,
-00:10:46.040 --> 00:10:52.199
-be to provide a Common Lisp implementation for Guile. Note
+12:01.366 --> 12:05.150
+as well as lots of other libraries,
-00:10:52.200 --> 00:10:56.199
-that between Guile Elisp and Guile Scheme, we have all of
+12:05.166 --> 12:10.000
+such as interfaces to GUI toolkits
-00:10:56.200 --> 00:10:58.839
-the essential ingredients for a Common Lisp environment.
+12:10.000 --> 00:12:13.766
+for a variety of operating systems.
-00:10:58.840 --> 00:11:03.279
-We can also share code with other Common Lisp
+00:12:13.866 --> 12:20.550
+At a certain point, this has technical advantages.
-00:11:03.280 --> 00:11:12.479
-implementations such as SBCL and SICL. Overall, the
+12:20.566 --> 00:12:24.216
+If most of Emacs is written in Lisp,
-00:11:12.480 --> 00:11:15.959
-duration of the project will be better measured in months
+00:12:24.216 --> 12:27.233
+then we could consider using Guile Hoot
-00:11:15.960 --> 00:11:19.479
-rather than years, despite Common Lisp's reputation for
+12:27.250 --> 12:29.666
+to compile Emacs to WebAssembly,
-00:11:19.480 --> 00:11:23.959
-being a large language. This could have multiple uses, of
+12:29.683 --> 12:33.200
+making it available perhaps in web browsers
-00:11:23.960 --> 00:11:29.199
-course. It could be a model for future improvements to
+12:33.200 --> 12:37.233
+or on systems with the WebAssembly system interface.
-00:11:29.200 --> 00:11:38.399
-Elisp, because Elisp and CL can interact directly without
+12:37.250 --> 12:41.266
+But it would also be a great victory
-00:11:38.400 --> 00:11:41.319
-problems. And it would be very easy for Elisp to borrow
+12:41.283 --> 12:43.033
+for practical software freedom.
-00:11:41.320 --> 00:11:45.479
-language features from Common Lisp. But for the purpose of a
+12:43.050 --> 12:45.866
+That's the idea that freedom one,
-00:11:45.480 --> 00:11:49.559
-C to Lisp transition, it would also provide us with instant
+12:45.883 --> 12:48.350
+the freedom to study and modify programs,
-00:11:49.560 --> 00:11:52.599
-access to a huge number of high-quality libraries for
+12:48.366 --> 12:51.633
+should not just be legally and technically possible,
-00:11:52.600 --> 00:11:58.159
-things that Guile is not necessarily equipped to deal with,
+12:51.650 --> 12:53.316
+but should be actively encouraged
-00:11:58.160 --> 00:12:03.879
-such as access to low-level Windows APIs, as well as lots of
+12:53.333 --> 12:57.066
+by our competing environments.
-00:12:03.880 --> 00:12:08.799
-other libraries, such as interfaces to GUI toolkits for a
+12:57.083 --> 13:00.116
+Emacs is really one of the archetypal examples of this,
-00:12:08.800 --> 00:12:12.079
-variety of operating systems.
+13:00.133 --> 00:13:03.116
+but we can and should go further.
-00:12:12.080 --> 00:12:21.799
-At a certain point, this has technical advantages. If
+00:13:03.216 --> 13:08.400
+When Emacs is implemented primarily in Lisp,
-00:12:21.800 --> 00:12:26.119
-most of Emacs is written in Lisp, then we could consider
+13:08.400 --> 13:11.466
+the entirety of the system
-00:12:26.120 --> 00:12:30.759
-using Guile Hoot to compile Emacs to WebAssembly, making it
+13:11.483 --> 13:14.600
+will be transparent to examination
-00:12:30.760 --> 00:12:35.159
-available perhaps in web browsers or on systems with the
+13:14.600 --> 13:16.066
+and open to modification.
-00:12:35.160 --> 00:12:40.679
-WebAssembly System Interface. But it would also be a great
+13:16.083 --> 13:21.200
+Every part of Emacs will be instantaneously inspectable,
-00:12:40.680 --> 00:12:44.759
-victory for practical software freedom. That's the idea
+13:21.200 --> 00:13:24.916
+redefinable, and debuggable.
-00:12:44.760 --> 00:12:48.359
-that Freedom One, the freedom to study and modify programs,
+00:13:25.016 --> 13:28.266
+This will be a fundamental change
-00:12:48.360 --> 00:12:52.039
-should not just be legally and technically possible, but
+13:28.283 --> 13:32.800
+in what is possible to do with Emacs extensions.
-00:12:52.040 --> 00:12:54.719
-should be actively encouraged by our computing
+13:32.800 --> 13:37.000
+For example, one experiment I'd be interested in
-00:12:54.720 --> 00:12:58.959
-environments. Emacs is really one of the archetypal
+13:37.000 --> 13:40.316
+is using the Common Lisp Interface Manager
-00:12:58.960 --> 00:13:02.519
-examples of this, but we can and should go further.
+13:40.333 --> 13:43.233
+as the basis for Emacs's user interface.
-00:13:02.520 --> 00:13:10.919
-When Emacs is implemented primarily in Lisp, the entirety
+13:43.250 --> 13:48.516
+Screwlisp is giving a talk about McCLIM later today,
-00:13:10.920 --> 00:13:14.599
-of the system will be transparent to examination and open to
+13:48.533 --> 13:53.233
+but for present purposes,
-00:13:14.600 --> 00:13:20.359
-modification. Every part of Emacs will be instantaneously
+13:53.250 --> 13:55.633
+just think of it as a super-powered version
-00:13:20.360 --> 00:13:23.319
-inspectable, redefinable, and debuggable.
+13:55.650 --> 13:58.350
+of Emacs's concept of interactive functions.
-00:13:23.320 --> 00:13:30.559
-This will be a fundamental change in what is possible to
+13:58.366 --> 14:02.800
+It would be a pretty long-term project
-00:13:30.560 --> 00:13:36.159
-do with Emacs extensions. For example, one experiment I'd
+14:02.800 --> 14:04.800
+in Emacs as it currently exists,
-00:13:36.160 --> 00:13:40.319
-be interested in is using the Common Lisp Interface Manager
+14:04.800 --> 14:06.600
+but it would be almost trivial
-00:13:40.320 --> 00:13:46.479
-as the basis for Emacs's user interface. Screwlisp is
+14:06.600 --> 14:12.633
+if Emacs were customizable at the lowest layers via Lisp.
-00:13:46.480 --> 00:13:52.879
-giving a talk about McCLIM later today, but for present
+14:12.650 --> 14:19.150
+We'll certainly be looking at the practicality
-00:13:52.880 --> 00:13:55.919
-purposes, just think of it as a super-powered version of
+14:19.166 --> 14:20.950
+of these kinds of changes
-00:13:55.920 --> 00:14:01.279
-Emacs's concept of interactive functions. It would be a
+14:20.966 --> 00:14:25.033
+as we continue developing Guile Emacs.
-00:14:01.280 --> 00:14:04.799
-pretty long-term project in Emacs as it currently exists,
+00:14:25.133 --> 00:14:29.933
+Finally, how can you get involved
-00:14:04.800 --> 00:14:10.519
-but it would be almost trivial if Emacs were customizable at
+00:14:30.033 --> 00:14:32.400
+with and support Guile Emacs?
-00:14:10.520 --> 00:14:11.599
-the lowest layers via Lisp.
+00:14:32.500 --> 14:35.316
+One way to help is just by trying it out
-00:14:11.600 --> 00:14:19.599
-We'll certainly be looking at the practicality of these
+14:35.333 --> 00:14:37.716
+and letting us know what your experiences are like.
-00:14:19.600 --> 00:14:23.839
-kinds of changes as we continue developing Guile-Emacs.
+00:14:37.816 --> 14:41.466
+There will be a snapshot available
-00:14:23.840 --> 00:14:31.719
-Finally, how can you get involved with and support Guile
+14:41.483 --> 00:14:44.166
+on the Codeberg project site
-00:14:31.720 --> 00:14:35.999
-Emacs? One way to help is just by trying it out and letting us
+00:14:44.266 --> 14:47.000
+of the version that I'm using to give this presentation.
-00:14:36.000 --> 00:14:40.519
-know what your experiences are like. There will be a
+14:47.000 --> 14:51.116
+It will be available both as a Guix package
-00:14:40.520 --> 00:14:44.079
-snapshot available on the Codeberg project site of the
+14:51.133 --> 14:55.916
+and as a portable tarball. This will be more interesting
-00:14:44.080 --> 00:14:48.759
-version that I'm using to give this presentation. It will be
+14:55.933 --> 00:15:00.266
+as we get closer to a complete rebase.
-00:14:48.760 --> 00:14:52.719
-available both as a Guix package and as a portable tarball.
+00:15:00.366 --> 15:06.516
+We're also always happy to talk to potential contributors
-00:14:52.720 --> 00:14:58.799
-This will be more interesting as we get closer to a complete
+15:06.533 --> 00:15:12.100
+or potential collaborators from other projects.
-00:14:58.800 --> 00:15:05.479
-rebase. We're also always happy to talk to potential
+00:15:12.200 --> 15:16.433
+We can always use bug reports,
-00:15:05.480 --> 00:15:10.879
-contributors or potential collaborators from other
+15:16.450 --> 15:18.866
+and we're interested in what kind of features
-00:15:10.880 --> 00:15:11.599
-projects.
+15:18.883 --> 15:21.716
+people actually want to see in Guile Emacs.
-00:15:11.600 --> 00:15:18.159
-We can always use bug reports, and we're interested in what
+15:21.733 --> 00:15:25.200
+Guile Emacs is also being developed
-00:15:18.160 --> 00:15:21.719
-kind of features people actually want to see in Guile-Emacs.
+00:15:25.300 --> 00:15:27.816
+by a small worker cooperative,
-00:15:21.720 --> 00:15:27.359
-Guile-Emacs is also being developed by a small worker
+00:15:27.916 --> 00:15:33.100
+so donations are a pretty direct way to support the project.
-00:15:27.360 --> 00:15:32.159
-cooperative, so donations are a pretty direct way to
+00:15:33.200 --> 15:37.150
+If you do nothing else, I recommend going to the website
-00:15:32.160 --> 00:15:36.039
-support the project. If you do nothing else, I recommend
+15:37.166 --> 15:40.716
+and subscribing to our mailing lists
-00:15:36.040 --> 00:15:40.719
-going to the website and subscribing to our mailing lists so
+15:40.733 --> 15:45.600
+so that you can keep up with news on the project.
-00:15:40.720 --> 00:15:45.879
-that you can keep up with news on the project. If you're
+15:45.600 --> 15:47.316
+If you're watching this at Emacsconf,
-00:15:45.880 --> 00:15:49.239
-watching this at EmacsConf, there will be a Q&A session
+15:47.333 --> 15:50.466
+there will be a Q&A session immediately following this,
-00:15:49.240 --> 00:15:57.080
-immediately following this, and thanks for watching!
+15:50.483 --> 15:57.066
+and thanks for watching.
diff --git a/2024/info/blee-before.md b/2024/info/blee-before.md
index 83fb3387..767be959 100644
--- a/2024/info/blee-before.md
+++ b/2024/info/blee-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="blee">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect stroke-width="3" x="123" y="15" opacity="0.8" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect stroke-width="3" x="123" y="15" opacity="0.8" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/guile-after.md b/2024/info/guile-after.md
index 75a895f9..d7ee06fd 100644
--- a/2024/info/guile-after.md
+++ b/2024/info/guile-after.md
@@ -4,206 +4,275 @@
<a name="guile-mainVideo-transcript"></a>
# Transcript
-[[!template text="""Hello everyone. I'm Robin Templeton, and I'm going to talk""" start="00:00:00.000" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""about Emacs Beguiled and recent progress on the Guile-Emacs""" start="00:00:03.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""project.""" start="00:00:07.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""First of all, if you're not familiar with Guile, it's an""" start="00:00:13.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""implementation of the Scheme programming language, which""" start="00:00:16.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""is a dialect of Lisp, and in the same family as Emacs Lisp, and""" start="00:00:20.240" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile is GNU's official extension language. The goal of""" start="00:00:24.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the Guile-Emacs project is to use Guile as the basis for""" start="00:00:28.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Emacs's Lisp support. It has two main components: a new""" start="00:00:32.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Emacs Lisp compiler built on top of Guile, and a variant of""" start="00:00:37.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Emacs in which the built-in Lisp implementation is""" start="00:00:41.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""entirely replaced with Guile Elisp. We expect the""" start="00:00:45.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""combination of these two projects to have several""" start="00:00:50.240" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""benefits. One is improved performance. Another is""" start="00:00:53.440" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""increased expressiveness for Elisp and making it easier to""" start="00:00:58.000" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""extend and experiment with the language. Finally, it""" start="00:01:03.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""will reduce Emacs's reliance on C for two reasons. Guile will""" start="00:01:07.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""be responsible for the language implementation, so Emacs""" start="00:01:13.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""will no longer have to include a Lisp interpreter. It""" start="00:01:16.960" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""will also become possible to implement much more of Emacs in""" start="00:01:21.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Lisp than is currently feasible. Of course, this raises""" start="00:01:25.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the question of why Guile is suitable for this project. And""" start="00:01:30.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""we chose Guile for a few reasons. Guile is primarily a Scheme""" start="00:01:34.120" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""implementation, but it also has built-in support for""" start="00:01:38.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""multiple languages using its compiler tower. To add""" start="00:01:41.120" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""support for a new language to Guile, you only have to write a""" start="00:01:44.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""compiler from the source language to Tree-IL, which is""" start="00:01:50.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""essentially a low-level, minimal representation of""" start="00:01:53.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Scheme. All of Guile's compiler optimizations occur at the""" start="00:01:57.440" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Tree-IL layer or lower, so you don't need to worry about the""" start="00:02:02.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""lower-level details of the compiler when initially""" start="00:02:07.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""implementing your language. Guile also has some Lisp""" start="00:02:10.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""features that are very rare in Scheme implementations. For""" start="00:02:14.640" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""example, it has a nil value that counts as both false and an""" start="00:02:18.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""empty list, just like in Elisp, and it also has a version of""" start="00:02:22.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the Common Lisp Object System and its metaobject protocol,""" start="00:02:27.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""which is called GOOPS.""" start="00:02:32.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""The idea of Guile-Emacs has a pretty long history, going back""" start="00:02:37.240" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""at least three decades. There have been about half a dozen""" start="00:02:42.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""previous implementation attempts. But the current""" start="00:02:45.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""iteration began with a series of six Summer of Code""" start="00:02:48.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""internships: Daniel Kraft's in 2009, and then my""" start="00:02:51.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""internships from 2010 to 2014. My basic implementation""" start="00:02:56.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""strategy was pretty straightforward. I implemented a core""" start="00:03:02.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""subset of Elisp, which was enough to run some batch mode""" start="00:03:06.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""programs outside of Emacs. In Emacs, I modified the garbage""" start="00:03:09.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""collector and the data structures for Lisp objects to use""" start="00:03:15.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""their libguile equivalents. I replaced Emacs' Lisp""" start="00:03:19.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""evaluator with the one provided by Guile Elisp.""" start="00:03:24.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""After a little over a year of work, at the end of the 2014""" start="00:03:32.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""internship, I ended up with a fully functional prototype of""" start="00:03:35.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile-Emacs. It used Guile Elisp alone as its Lisp""" start="00:03:41.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""implementation and was completely compatible with Emacs""" start="00:03:46.040" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""functionality and with external extensions. One caveat""" start="00:03:53.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""was that performance was pretty bad, because I was focused""" start="00:03:57.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""on correctness, as well as ease of integration with the""" start="00:04:01.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Emacs C code. But it was nonetheless a major milestone for""" start="00:04:05.640" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the project. Let's take just a moment to look at""" start="00:04:10.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile-Elisp.""" start="00:04:15.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""For starters, we have access to Guile modules. If we call""" start="00:04:19.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile's <i>version</i> function, we can see that we're running""" start="00:04:23.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""under Guile 3.0. We have access to some of the numeric tower via""" start="00:04:26.960" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the arithmetic functions. We also have multiple values. We""" start="00:04:33.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""have to be careful to use Guile's <i>values</i> procedure here, not""" start="00:04:41.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the CL library's, but you can see that this works properly""" start="00:04:45.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""rather than being an emulation. Finally, we have tail""" start="00:04:48.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""call elimination. Naturally, we're going to use factorial""" start="00:04:52.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""to demonstrate it. If <i>n</i> is zero, return the answer, else""" start="00:04:58.000" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""recurse with <i>n</i> less one and <i>n</i> times <i>a</i>.""" start="00:05:07.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Of course, this definition works correctly, but it gets""" start="00:05:14.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""more interesting if we communicate the answer with an""" start="00:05:17.120" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""error,""" start="00:05:21.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""in order to look at a backtrace. You can see here that there are no""" start="00:05:27.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""calls to <i>fact</i> visible in between the request to evaluate and""" start="00:05:32.360" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the error communicating the answer. That's because""" start="00:05:37.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""this tail call has been optimized into effectively a goto.""" start="00:05:42.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""This is essential for any kind of serious functional""" start="00:05:53.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""programming.""" start="00:05:55.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""That's a peek at Guile-Elisp. In 2015, I left university""" start="00:06:00.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""to go work on web technologies, and the project was dormant""" start="00:06:05.360" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""for a very long time. But that's been changing recently.""" start="00:06:09.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""During the last few months, I've been working with Larry""" start="00:06:14.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Valkama to rebase Guile-Emacs onto the development branch""" start="00:06:17.040" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""of upstream Emacs, including the past decade's worth of""" start="00:06:23.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""upstream development. What we've ended up with is a series""" start="00:06:28.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""of rebases onto different versions of Emacs. The older ones""" start="00:06:33.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""tend to work pretty well. The newer ones have increasingly""" start="00:06:38.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""bad problems where they haven't been properly adjusted for""" start="00:06:44.240" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""changes in the Emacs implementation. But we do have by now a""" start="00:06:49.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""version of Emacs 30 which boots correctly and can be used for""" start="00:06:55.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""interactive debugging, as well as the ability to bisect the""" start="00:06:58.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""revisions of Emacs and find out where regressions were""" start="00:07:04.960" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""introduced. Our immediate goal is of course to complete""" start="00:07:08.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the rebase. At the same time, we want to improve Guile Elisp's""" start="00:07:13.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""performance to at least be competitive with ordinary Emacs""" start="00:07:19.720" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Lisp. Just to characterize the performance situation,""" start="00:07:22.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile Elisp is usually about half as fast as ordinary Elisp,""" start="00:07:29.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""while Guile Scheme is quite often an order of magnitude""" start="00:07:34.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""faster than ordinary Elisp, and that's based on micro""" start="00:07:37.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""benchmarks like the Gabriel benchmarks. But there's""" start="00:07:43.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""clearly a lot of room to improve our compiler's output.""" start="00:07:47.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""If you want to mark your calendars, we're expecting to have a""" start="00:07:52.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""usable version of Guile-Emacs 30 out sometime next spring. We're""" start="00:07:57.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""also going to put some effort into either extracting old""" start="00:08:04.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""work or doing new work that could be contributed upstream.""" start="00:08:06.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""On the Guile side, we'll probably start out with optimizing""" start="00:08:13.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the dynamic binding facilities, which are used very seldom""" start="00:08:17.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""in Scheme, but are used all the time in traditional Lisp""" start="00:08:22.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""dialects. On the Emacs side, we'll be working initially on""" start="00:08:27.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""abstracting away the details of the Lisp implementation""" start="00:08:31.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""where they're not relevant. And that will clean up the Emacs""" start="00:08:35.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""code base a bit. It'll make it easier to integrate Emacs and""" start="00:08:40.000" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile Elisp. It will probably be helpful for anyone who""" start="00:08:44.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""is working on ordinary Elisp on their own.""" start="00:08:49.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""We're also going to be adding new features to Emacs Lisp.""" start="00:08:51.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""We've seen a few of them already. The numeric tower, tail""" start="00:08:57.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""call optimization, Common Lisp compatibility. We're also""" start="00:09:01.640" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""going to provide access to Fibers, which is a Guile library""" start="00:09:05.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""based on ideas from Concurrent ML that provides much more""" start="00:09:10.360" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""powerful facilities for concurrent and parallel""" start="00:09:14.640" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""programming than what Emacs currently offers.""" start="00:09:17.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""This plan meets Guile-Emacs' basic goals, and it's work""" start="00:09:20.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""that we could maybe get integrated upstream in a reasonable""" start="00:09:33.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""amount of time. But it's also worth considering what more we""" start="00:09:36.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""can do, and what effect Guile-Emacs might have on Emacs if it""" start="00:09:41.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""becomes simply Emacs.""" start="00:09:47.240" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""For context, the amount of C code in Emacs has increased by""" start="00:09:49.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""around 50% in the last decade, and now it constitutes around""" start="00:09:54.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""a quarter of the code base. C can be a bit of a barrier to""" start="00:09:58.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""customizing and extending Emacs. For example, there are""" start="00:10:06.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""about 1500 C subroutines. Around 500 are used in C code, as""" start="00:10:13.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""well as available to Lisp code, and being written in C means""" start="00:10:20.440" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""that they can't be practically redefined. The use of C can""" start="00:10:26.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""become a barrier to extending Emacs or customizing its""" start="00:10:31.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""behavior. We might consider writing as much of Emacs as""" start="00:10:35.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""possible in Lisp. One way to speed up this process would""" start="00:10:40.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""be to provide a Common Lisp implementation for Guile. Note""" start="00:10:46.040" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""that between Guile Elisp and Guile Scheme, we have all of""" start="00:10:52.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the essential ingredients for a Common Lisp environment.""" start="00:10:56.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""We can also share code with other Common Lisp""" start="00:10:58.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""implementations such as SBCL and SICL. Overall, the""" start="00:11:03.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""duration of the project will be better measured in months""" start="00:11:12.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""rather than years, despite Common Lisp's reputation for""" start="00:11:15.960" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""being a large language. This could have multiple uses, of""" start="00:11:19.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""course. It could be a model for future improvements to""" start="00:11:23.960" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Elisp, because Elisp and CL can interact directly without""" start="00:11:29.200" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""problems. And it would be very easy for Elisp to borrow""" start="00:11:38.400" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""language features from Common Lisp. But for the purpose of a""" start="00:11:41.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""C to Lisp transition, it would also provide us with instant""" start="00:11:45.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""access to a huge number of high-quality libraries for""" start="00:11:49.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""things that Guile is not necessarily equipped to deal with,""" start="00:11:52.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""such as access to low-level Windows APIs, as well as lots of""" start="00:11:58.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""other libraries, such as interfaces to GUI toolkits for a""" start="00:12:03.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""variety of operating systems.""" start="00:12:08.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""At a certain point, this has technical advantages. If""" start="00:12:12.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""most of Emacs is written in Lisp, then we could consider""" start="00:12:21.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""using Guile Hoot to compile Emacs to WebAssembly, making it""" start="00:12:26.120" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""available perhaps in web browsers or on systems with the""" start="00:12:30.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""WebAssembly System Interface. But it would also be a great""" start="00:12:35.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""victory for practical software freedom. That's the idea""" start="00:12:40.680" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""that Freedom One, the freedom to study and modify programs,""" start="00:12:44.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""should not just be legally and technically possible, but""" start="00:12:48.360" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""should be actively encouraged by our computing""" start="00:12:52.040" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""environments. Emacs is really one of the archetypal""" start="00:12:54.720" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""examples of this, but we can and should go further.""" start="00:12:58.960" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""When Emacs is implemented primarily in Lisp, the entirety""" start="00:13:02.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""of the system will be transparent to examination and open to""" start="00:13:10.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""modification. Every part of Emacs will be instantaneously""" start="00:13:14.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""inspectable, redefinable, and debuggable.""" start="00:13:20.360" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""This will be a fundamental change in what is possible to""" start="00:13:23.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""do with Emacs extensions. For example, one experiment I'd""" start="00:13:30.560" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""be interested in is using the Common Lisp Interface Manager""" start="00:13:36.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""as the basis for Emacs's user interface. Screwlisp is""" start="00:13:40.320" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""giving a talk about McCLIM later today, but for present""" start="00:13:46.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""purposes, just think of it as a super-powered version of""" start="00:13:52.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Emacs's concept of interactive functions. It would be a""" start="00:13:55.920" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""pretty long-term project in Emacs as it currently exists,""" start="00:14:01.280" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""but it would be almost trivial if Emacs were customizable at""" start="00:14:04.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""the lowest layers via Lisp.""" start="00:14:10.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""We'll certainly be looking at the practicality of these""" start="00:14:11.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""kinds of changes as we continue developing Guile-Emacs.""" start="00:14:19.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Finally, how can you get involved with and support Guile""" start="00:14:23.840" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Emacs? One way to help is just by trying it out and letting us""" start="00:14:31.720" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""know what your experiences are like. There will be a""" start="00:14:36.000" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""snapshot available on the Codeberg project site of the""" start="00:14:40.520" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""version that I'm using to give this presentation. It will be""" start="00:14:44.080" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""available both as a Guix package and as a portable tarball.""" start="00:14:48.760" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""This will be more interesting as we get closer to a complete""" start="00:14:52.720" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""rebase. We're also always happy to talk to potential""" start="00:14:58.800" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""contributors or potential collaborators from other""" start="00:15:05.480" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""projects.""" start="00:15:10.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""We can always use bug reports, and we're interested in what""" start="00:15:11.600" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""kind of features people actually want to see in Guile-Emacs.""" start="00:15:18.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""Guile-Emacs is also being developed by a small worker""" start="00:15:21.720" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""cooperative, so donations are a pretty direct way to""" start="00:15:27.360" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""support the project. If you do nothing else, I recommend""" start="00:15:32.160" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""going to the website and subscribing to our mailing lists so""" start="00:15:36.040" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""that you can keep up with news on the project. If you're""" start="00:15:40.720" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""watching this at EmacsConf, there will be a Q&A session""" start="00:15:45.880" video="mainVideo-guile" id="subtitle"]]
-[[!template text="""immediately following this, and thanks for watching!""" start="00:15:49.240" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Hello everyone, I'm Robin Templeton,""" start="00:00:00.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and I'm going to talk about Emacs Beguiled""" start="00:00:03.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and recent progress on the Guile Emacs project.""" start="00:00:05.766" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""First of all, if you're not familiar with Guile,""" start="00:00:13.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""it's an implementation of the Scheme programming language,""" start="00:00:16.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""which is a dialect of Lisp,""" start="00:00:19.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and in the same family as Emacs Lisp,""" start="00:00:22.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and Guile is GNU's official extension language.""" start="00:00:24.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""The goal of the Guile Emacs project""" start="00:00:28.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""is to use Guile as the basis for Emacs's Lisp support.""" start="00:00:30.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It has two main components:""" start="00:00:34.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""a new Emacs Lisp compiler built on top of Guile,""" start="00:00:37.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and a variant of Emacs""" start="00:00:41.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""in which the built-in Lisp implementation""" start="00:00:42.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""is entirely replaced with Guile Elisp.""" start="00:00:45.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We expect the combination of these two projects""" start="00:00:49.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to have several benefits. One is improved performance.""" start="00:00:52.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Another is increased expressiveness for Elisp""" start="00:00:57.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and making it easier to extend""" start="00:01:00.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and experiment with the language.""" start="00:01:04.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Finally, it will reduce""" start="00:01:07.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Emacs's reliance on C for two reasons.""" start="00:01:08.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Guile will be responsible for the language implementation,""" start="00:01:12.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""so Emacs will no longer have to include a Lisp interpreter.""" start="00:01:16.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It will also become possible""" start="00:01:21.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to implement much more of Emacs in Lisp""" start="00:01:23.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""than is currently feasible.""" start="00:01:25.683" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Of course, this raises the question of""" start="00:01:29.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""why Guile is suitable for this product.""" start="00:01:31.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""And we chose Guile for a few reasons.""" start="00:01:34.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Guile is primarily a Scheme implementation,""" start="00:01:36.683" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but it also has built-in support for multiple languages""" start="00:01:39.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""using its compiler tower.""" start="00:01:42.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""To add support for a new language to Guile,""" start="00:01:43.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""You only have to write a compiler""" start="00:01:46.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""from the source language to TRIAL[??],""" start="00:01:50.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""which is essentially a low-level,""" start="00:01:52.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""minimal representation of Scheme.""" start="00:01:55.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""All of Guile's compiler optimizations""" start="00:01:58.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""occur at the TRIAL[??] layer or lower,""" start="00:02:01.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""so you don't need to worry""" start="00:02:04.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""about the lower-level details of the compiler""" start="00:02:06.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""when initially implementing your language.""" start="00:02:09.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Guile also has some Lisp features""" start="00:02:12.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""that are very rare in schema implementations.""" start="00:02:14.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""For example, it has a nil value""" start="00:02:18.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""that counts as both false and an empty list,""" start="00:02:20.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""just like an Elisp,""" start="00:02:23.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and it also has a version of the Common Lisp object system""" start="00:02:25.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and its metoptic[??] protocol, which is called GOOPS.""" start="00:02:30.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""The idea of Guile Emacs has a pretty long history.""" start="00:02:37.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""going back at least three decades.""" start="00:02:40.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""There have been about""" start="00:02:43.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""half a dozen previous implementation attempts.""" start="00:02:44.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""But the current iteration began with""" start="00:02:48.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""a series of six Summer of Code internships,""" start="00:02:49.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Daniel Kraft's[??] in 2009,""" start="00:02:52.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and then my internships from 2010 to 2014.""" start="00:02:56.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""My basic implementation strategy""" start="00:03:01.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""was pretty straightforward.""" start="00:03:03.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""I implemented a core subset of Elisp,""" start="00:03:05.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""which was enough to run some batch mode programs""" start="00:03:07.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""outside of Emacs.""" start="00:03:10.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""In Emacs, I modified the garbage collector""" start="00:03:12.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and the data structures for Lisp objects""" start="00:03:15.283" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to use their libgal equivalents.""" start="00:03:18.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""I replaced Emacs' Lisp evaluator""" start="00:03:23.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""with the one provided by guile-elisp.[??]""" start="00:03:26.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""After a little over a year of work""" start="00:03:32.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""at the end of the 2014 internship,""" start="00:03:34.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""I ended up with a fully functional prototype of Guile Emacs.""" start="00:03:37.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It used Guile Elisp alone as its Lisp implementation""" start="00:03:44.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and was completely compatible with Emacs functionality""" start="00:03:48.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and with external extensions.""" start="00:03:53.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""One caveat was that performance was pretty bad,""" start="00:03:56.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""because I was focused on correctness,""" start="00:03:59.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as well as ease of integration with the Emacs C code.""" start="00:04:03.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""But it was nonetheless a major milestone for the project.""" start="00:04:07.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Let's take just a moment to look at guile-elisp.""" start="00:04:11.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""For starters, we have access to guile modules.""" start="00:04:19.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""If we call guile's version function,""" start="00:04:23.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""we can see that we're running under guile 3.0,""" start="00:04:25.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""have access to some of the numeric tower""" start="00:04:30.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""via the arithmetic functions. We also have multiple values.""" start="00:04:33.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We have to be careful to use Guile's values procedure here,""" start="00:04:39.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""not the CL libraries,""" start="00:04:43.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but you can see that this works properly""" start="00:04:46.683" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""rather than being an emulation.""" start="00:04:48.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Finally, we have tail call elimination.""" start="00:04:51.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Naturally, we're going to use factorial to demonstrate it.""" start="00:04:54.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""If n is zero, return the answer,""" start="00:05:02.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""else recurse with n less one and n times a.""" start="00:05:05.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Of course this definition works correctly,""" start="00:05:14.283" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but it gets more interesting""" start="00:05:16.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""if we communicate the answer with an error.""" start="00:05:18.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""or to look at a backtrace.""" start="00:05:25.100" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""You can see here that there are""" start="00:05:29.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""no calls to fact visible in between""" start="00:05:32.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""the request to evaluate""" start="00:05:35.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and the error communicating the answer.""" start="00:05:37.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""That's because this tail call""" start="00:05:42.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""has been optimized into effectively a goto.""" start="00:05:44.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""This is essential for any kind""" start="00:05:48.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""of serious functional programming.""" start="00:05:54.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""That's a peek at guile-elisp.""" start="00:06:00.116" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""In 2015, I left university to go work on web technologies,""" start="00:06:03.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and the project was dormant for a very long time.""" start="00:06:08.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""But that's been changing recently.""" start="00:06:11.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""During the last few months,""" start="00:06:13.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""I've been working with Larry Valkama[??]""" start="00:06:16.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to rebase guile-emacs""" start="00:06:17.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""onto the development branch of upstream emacs,""" start="00:06:20.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""including the past decade's worth of upstream development.""" start="00:06:24.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""What we've ended up with is a series of""" start="00:06:29.683" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""rebases onto different versions of Emacs.""" start="00:06:34.267" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""The older ones tend to work pretty well.""" start="00:06:37.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""The newer ones have increasingly bad problems""" start="00:06:39.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""where they haven't been properly adjusted""" start="00:06:46.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for changes in the Emacs implementation.""" start="00:06:49.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but we do have by now a version of Emacs 30""" start="00:06:52.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""which boots correctly""" start="00:06:56.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and can be used for interactive debugging,""" start="00:06:57.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as well as the ability to bisect the revisions of Emacs""" start="00:06:59.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and find out where regressions were introduced.""" start="00:07:06.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Our immediate goal is of course to complete the rebase.""" start="00:07:10.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""At the same time,""" start="00:07:14.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""we want to improve Guile Elisp's performance""" start="00:07:16.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to at least be competitive with ordinary Emacs Lisp.""" start="00:07:20.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Just to characterize the performance situation,""" start="00:07:24.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Guile Elisp is usually about half""" start="00:07:29.283" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as fast as ordinary Elisp,""" start="00:07:32.766" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""while Guile Scheme is quite often""" start="00:07:34.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""an order of magnitude faster than ordinary Elisp,""" start="00:07:37.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and that's based on micro benchmarks""" start="00:07:41.350" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""like the Gabriel[??] benchmarks.""" start="00:07:43.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but there's clearly a lot of room""" start="00:07:46.233" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to improve our compiler's output.""" start="00:07:50.900" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""If you want to mark your calendars,""" start="00:07:53.350" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""we're expecting to have a usable version of Guile Emacs 30""" start="00:07:56.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""out sometime next spring.""" start="00:08:00.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We're also going to put some effort""" start="00:08:03.116" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""into either extracting old work""" start="00:08:05.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""or doing new work that could be contributed upstream.""" start="00:08:09.100" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""On the Guile side, we'll probably start out with""" start="00:08:12.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""optimizing the dynamic binding facilities,""" start="00:08:16.750" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""which are used very seldom in Scheme,""" start="00:08:21.233" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but are used all the time in traditional Lisp dialects.""" start="00:08:23.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""On the Emacs side, we'll be working initially""" start="00:08:27.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""on abstracting away the details of the Lisp implementation""" start="00:08:31.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""where they're not relevant,""" start="00:08:35.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""And that will clean up the Emacs code base a bit.""" start="00:08:37.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It'll make it easier to integrate Emacs and Guile Elisp.""" start="00:08:40.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It will probably be helpful for anyone""" start="00:08:45.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""who is working on ordinary Elisp on their own.""" start="00:08:47.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We're also going to be adding new features to Emacs Lisp.""" start="00:08:51.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We've seen a few of them already.""" start="00:08:57.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""The new [??] tower, tail call optimization,""" start="00:08:59.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""common list compatibility.""" start="00:09:02.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We're also going to provide access to Fibers,""" start="00:09:04.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""which is a guide library based on ideas from concurrent ML""" start="00:09:07.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""that provides much more powerful facilities""" start="00:09:12.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for concurrent and parallel programming""" start="00:09:15.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""than what Emacs currently offers.""" start="00:09:18.283" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""This plan meets Guile Emacs' basic goals,""" start="00:09:24.666" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and it's work that we could maybe get integrated upstream""" start="00:09:32.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""in a reasonable amount of time.""" start="00:09:36.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""But it's also worth considering what more we can do,""" start="00:09:38.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and what effect Guile Emacs might have on Emacs""" start="00:09:42.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""if it becomes simply Emacs.""" start="00:09:46.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""For context, the amount of C code in Emacs""" start="00:09:50.666" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""has increased by around 50% in the last decade,""" start="00:09:54.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and now it constitutes around a quarter of the code base.""" start="00:09:57.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""C can be a bit of a barrier""" start="00:09:59.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to customizing and extending Emacs.""" start="00:10:06.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""For example, there are about 1500 C subroutines.""" start="00:10:11.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Around 500 are used in C code,""" start="00:10:15.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as well as available to Lisp code,""" start="00:10:19.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and being written in C means""" start="00:10:23.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""that they can't be practically redefined.""" start="00:10:25.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""the use of C can become a barrier to extending Emacs""" start="00:10:28.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""or customizing its behavior.""" start="00:10:34.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We might consider writing""" start="00:10:36.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as much of Emacs as possible in Lisp.""" start="00:10:39.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""One way to speed up this process""" start="00:10:42.916" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""would be to provide a common Lisp implementation for Guile.""" start="00:10:46.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Note that between guile-elisp and guile-scheme,""" start="00:10:49.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""we have all of the essential ingredients""" start="00:10:54.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for a Common Lisp environment. We can also share code""" start="00:10:57.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""with other Common Lisp implementations""" start="00:11:03.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""such as SBCL and SICL[??].""" start="00:11:06.016" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Overall, the duration of the project""" start="00:11:10.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""will be better measured in months rather than years,""" start="00:11:13.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""despite Common Lisp's reputation""" start="00:11:16.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for being a large language.""" start="00:11:19.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""This could have multiple uses, of course.""" start="00:11:21.216" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It could be a model for future improvements to Elisp,""" start="00:11:24.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""because Elisp and CL can interact directly without problems.""" start="00:11:29.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and it would be very easy for Elisp""" start="00:11:34.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to borrow language features from Common Lisp.""" start="00:11:38.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""But for the purpose of a C to Lisp transition,""" start="00:11:41.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""it would also provide us with instant access""" start="00:11:46.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to a huge number of high-quality libraries""" start="00:11:50.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for things that""" start="00:11:52.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Guile is not necessarily equipped to deal with,""" start="00:11:54.850" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""such as access to low-level Windows APIs,""" start="00:11:58.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as well as lots of other libraries,""" start="00:12:01.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""such as interfaces to GUI toolkits""" start="00:12:05.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for a variety of operating systems.""" start="00:12:10.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""At a certain point, this has technical advantages.""" start="00:12:13.866" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""If most of Emacs is written in Lisp,""" start="00:12:20.566" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""then we could consider using Guile Hoot""" start="00:12:24.216" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""to compile Emacs to WebAssembly,""" start="00:12:27.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""making it available perhaps in web browsers""" start="00:12:29.683" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""or on systems with the WebAssembly system interface.""" start="00:12:33.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""But it would also be a great victory""" start="00:12:37.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""for practical software freedom.""" start="00:12:41.283" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""That's the idea that freedom one,""" start="00:12:43.050" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""the freedom to study and modify programs,""" start="00:12:45.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""should not just be legally and technically possible,""" start="00:12:48.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but should be actively encouraged""" start="00:12:51.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""by our competing environments.""" start="00:12:53.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Emacs is really one of the archetypal examples of this,""" start="00:12:57.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but we can and should go further.""" start="00:13:00.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""When Emacs is implemented primarily in Lisp,""" start="00:13:03.216" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""the entirety of the system""" start="00:13:08.400" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""will be transparent to examination""" start="00:13:11.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and open to modification.""" start="00:13:14.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Every part of Emacs will be instantaneously inspectable,""" start="00:13:16.083" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""redefinable, and debuggable.""" start="00:13:21.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""This will be a fundamental change""" start="00:13:25.016" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""in what is possible to do with Emacs extensions.""" start="00:13:28.283" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""For example, one experiment I'd be interested in""" start="00:13:32.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""is using the Common Lisp Interface Manager""" start="00:13:37.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as the basis for Emacs's user interface.""" start="00:13:40.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Screwlisp is giving a talk about McCLIM later today,""" start="00:13:43.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but for present purposes,""" start="00:13:48.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""just think of it as a super-powered version""" start="00:13:53.250" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""of Emacs's concept of interactive functions.""" start="00:13:55.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It would be a pretty long-term project""" start="00:13:58.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""in Emacs as it currently exists,""" start="00:14:02.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""but it would be almost trivial""" start="00:14:04.800" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""if Emacs were customizable at the lowest layers via Lisp.""" start="00:14:06.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We'll certainly be looking at the practicality""" start="00:14:12.650" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""of these kinds of changes""" start="00:14:19.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as we continue developing Guile Emacs.""" start="00:14:20.966" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Finally, how can you get involved""" start="00:14:25.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""with and support Guile Emacs?""" start="00:14:30.033" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""One way to help is just by trying it out""" start="00:14:32.500" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and letting us know what your experiences are like.""" start="00:14:35.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""There will be a snapshot available""" start="00:14:37.816" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""on the Codeberg project site""" start="00:14:41.483" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""of the version that I'm using to give this presentation.""" start="00:14:44.266" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""It will be available both as a Guix package""" start="00:14:47.000" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and as a portable tarball. This will be more interesting""" start="00:14:51.133" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""as we get closer to a complete rebase.""" start="00:14:55.933" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We're also always happy to talk to potential contributors""" start="00:15:00.366" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""or potential collaborators from other projects.""" start="00:15:06.533" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""We can always use bug reports,""" start="00:15:12.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and we're interested in what kind of features""" start="00:15:16.450" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""people actually want to see in Guile Emacs.""" start="00:15:18.883" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""Guile Emacs is also being developed""" start="00:15:21.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""by a small worker cooperative,""" start="00:15:25.300" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""so donations are a pretty direct way to support the project.""" start="00:15:27.916" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""If you do nothing else, I recommend going to the website""" start="00:15:33.200" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and subscribing to our mailing lists""" start="00:15:37.166" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""so that you can keep up with news on the project.""" start="00:15:40.733" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""If you're watching this at Emacsconf,""" start="00:15:45.600" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""there will be a Q&A session immediately following this,""" start="00:15:47.333" video="mainVideo-guile" id="subtitle"]]
+[[!template text="""and thanks for watching.""" start="00:15:50.483" video="mainVideo-guile" id="subtitle"]]
diff --git a/2024/info/hyperbole-before.md b/2024/info/hyperbole-before.md
index ad58946f..f7fd3b90 100644
--- a/2024/info/hyperbole-before.md
+++ b/2024/info/hyperbole-before.md
@@ -3,7 +3,7 @@ May take questions after the event depending on how his move goes
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="hyperbole">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect stroke-width="3" x="205" y="15" opacity="0.8" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect stroke-width="3" x="205" y="15" opacity="0.8" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/learning-before.md b/2024/info/learning-before.md
index b35a8f61..2fef4577 100644
--- a/2024/info/learning-before.md
+++ b/2024/info/learning-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="learning">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect stroke-width="3" x="82" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect stroke-width="3" x="82" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/links-before.md b/2024/info/links-before.md
index eae428e7..c1ba9299 100644
--- a/2024/info/links-before.md
+++ b/2024/info/links-before.md
@@ -1,11 +1,11 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="links">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect stroke-width="3" x="13" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect stroke-width="3" x="13" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
-Format: 12-min talk ; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2024-links>
+Format: 12-min talk ; Q&A: Etherpad <https://pad.emacsconf.org/2024-links>
Etherpad: <https://pad.emacsconf.org/2024-links>
Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen)
Status: Q&A open for participation
@@ -22,6 +22,6 @@ Status: Q&A open for participation
08:26.000 Exposing notes outside Emacs
10:38.000 Future Directions and Potential Improvements
-"""]]<div></div>Duration: 11:21 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-links">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main.webm">Download --main.webm (21MB)</a></li></ul></div></div>
+"""]]<div></div>Duration: 11:21 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-links">Open Etherpad</a></li><li><a href="https://pad.emacsconf.org/2024-links">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main.webm">Download --main.webm (21MB)</a></li><li><a href="https://toobnix.org/w/qUW7dHGcHqXW5ZVKtwXspy">View on Toobnix</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2024/info/literate-before.md b/2024/info/literate-before.md
index 23b4bc9d..41334240 100644
--- a/2024/info/literate-before.md
+++ b/2024/info/literate-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="literate">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect stroke-width="3" x="432" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect stroke-width="3" x="432" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/pgmacs-before.md b/2024/info/pgmacs-before.md
index 2b2bb79d..1bab30e1 100644
--- a/2024/info/pgmacs-before.md
+++ b/2024/info/pgmacs-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="pgmacs">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect stroke-width="3" x="384" y="15" opacity="0.8" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect stroke-width="3" x="384" y="15" opacity="0.8" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/regex-before.md b/2024/info/regex-before.md
index 0b9c9415..fa870da4 100644
--- a/2024/info/regex-before.md
+++ b/2024/info/regex-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="regex">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/language" title="Immersive language learning with Emacs" data-slug="language"> <title> 10:30-10:40 Immersive language learning with Emacs</title> <rect x="123" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> language</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect stroke-width="3" x="41" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/hywiki" title="HyWiki: Fast, hyperlinked note-taking with no markup required" data-slug="hywiki"> <title> 1:00- 1:20 HyWiki: Fast, hyperlinked note-taking with no markup required</title> <rect x="329" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(354,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hywiki</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/org-teach" title="org-teach: a minor mode for writing course materials in Emacs" data-slug="org-teach"> <title> 10:30-10:50 org-teach: a minor mode for writing course materials in Emacs</title> <rect x="123" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(148,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-teach</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect stroke-width="3" x="41" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/sharing-before.md b/2024/info/sharing-before.md
index 9219d05c..b6f3cae5 100644
--- a/2024/info/sharing-before.md
+++ b/2024/info/sharing-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sharing">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect stroke-width="3" x="521" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect stroke-width="3" x="521" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/students-before.md b/2024/info/students-before.md
index e01fddd0..97fa3a1b 100644
--- a/2024/info/students-before.md
+++ b/2024/info/students-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="students">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect stroke-width="3" x="494" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect stroke-width="3" x="494" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/sun-close-before.md b/2024/info/sun-close-before.md
index d9986b06..3c8a71e4 100644
--- a/2024/info/sun-close-before.md
+++ b/2024/info/sun-close-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-close">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect stroke-width="3" x="645" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect stroke-width="3" x="645" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/sun-open-before.md b/2024/info/sun-open-before.md
index 91e23d17..e188a2b1 100644
--- a/2024/info/sun-open-before.md
+++ b/2024/info/sun-open-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-open">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect x="576" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/info/transducers-before.md b/2024/info/transducers-before.md
index 2ad59a58..ac1d5210 100644
--- a/2024/info/transducers-before.md
+++ b/2024/info/transducers-before.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
The following image shows where the talk is in the schedule for Sun 2024-12-08. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="transducers">
-<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect stroke-width="3" x="576" y="15" opacity="0.8" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2024/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2024/talks/links" title="Unlocking linked data: replacing specialized apps with an Org-based semantic wiki" data-slug="links"> <title> 9:10- 9:20 Unlocking linked data: replacing specialized apps with an Org-based semantic wiki</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> links</text></g></a> <a href="/2024/talks/regex" title="Emacs regex compilation and future directions for expressive pattern matching" data-slug="regex"> <title> 9:30- 9:50 Emacs regex compilation and future directions for expressive pattern matching</title> <rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(66,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> regex</text></g></a> <a href="/2024/talks/learning" title="Survival of the skillest: Thriving in the learning jungle" data-slug="learning"> <title> 10:00-10:20 Survival of the skillest: Thriving in the learning jungle</title> <rect x="82" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(107,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> learning</text></g></a> <a href="/2024/talks/blee" title="About Blee: enveloping our own autonomy directed digital ecosystem with Emacs" data-slug="blee"> <title> 10:30-11:15 About Blee: enveloping our own autonomy directed digital ecosystem with Emacs</title> <rect x="123" y="15" opacity="0.5" width="61" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee</text></g></a> <a href="/2024/talks/hyperbole" title="Fun things with GNU Hyperbole" data-slug="hyperbole"> <title> 11:30-11:45 Fun things with GNU Hyperbole</title> <rect x="205" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(223,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperbole</text></g></a> <a href="/2024/talks/open-mic" title="Open mic/pad for quick updates etc." data-slug="open-mic"> <title> 1:00- 1:30 Open mic/pad for quick updates etc.</title> <rect x="329" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(368,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2024/talks/pgmacs" title="PGmacs: browsing and editing PostgreSQL databases from Emacs" data-slug="pgmacs"> <title> 1:40- 1:55 PGmacs: browsing and editing PostgreSQL databases from Emacs</title> <rect x="384" y="15" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(402,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> pgmacs</text></g></a> <a href="/2024/talks/literate" title="Literate programming for the 21st Century" data-slug="literate"> <title> 2:15- 2:35 Literate programming for the 21st Century</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> literate</text></g></a> <a href="/2024/talks/students" title="An example of a cohesive student workflow in Emacs" data-slug="students"> <title> 3:00- 3:10 An example of a cohesive student workflow in Emacs</title> <rect x="494" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(505,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> students</text></g></a> <a href="/2024/talks/sharing" title="So you want to be an Emacs-fluencer?" data-slug="sharing"> <title> 3:20- 3:40 So you want to be an Emacs-fluencer?</title> <rect x="521" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2024/talks/transducers" title="Transducers: finally, ergonomic data processing for Emacs!" data-slug="transducers"> <title> 4:00- 4:30 Transducers: finally, ergonomic data processing for Emacs!</title> <rect stroke-width="3" x="576" y="15" opacity="0.8" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(615,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> transducers</text></g></a> <a href="/2024/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="645" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(656,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg>
</div>
[[!toc ]]
diff --git a/2024/schedule-details.md b/2024/schedule-details.md
index eb52ff83..7dd5bd86 100644
--- a/2024/schedule-details.md
+++ b/2024/schedule-details.md
@@ -16,18 +16,18 @@ Jump to: <a href="#date-2024-12-07">Sat Dec 7</a> - <a href="#date-2024-12-08">S
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-project.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-project""" startutc="""2024-12-07T14:40:00+0000""" endutc="""2024-12-07T15:00:00+0000""" start="""9:40""" end="""10:00""" title="""Managing writing project metadata with org-mode""" url="""/2024/talks/project""" speakers="""Blaine Mooers""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""project""" note="""captioned, video posted, video: 21:38"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-gypsum.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-gypsum""" startutc="""2024-12-07T15:00:00+0000""" endutc="""2024-12-07T15:20:00+0000""" start="""10:00""" end="""10:20""" title="""Gypsum: my clone of Emacs and ELisp written in Scheme""" url="""/2024/talks/gypsum""" speakers="""Ramin Honary""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""gypsum""" note="""captioned, video posted, video: 24:36"""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-org-update.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-org-update""" startutc="""2024-12-07T15:20:00+0000""" endutc="""2024-12-07T16:00:00+0000""" start="""10:20""" end="""11:00""" title="""The Future of Org""" url="""/2024/talks/org-update""" speakers="""Ihor Radchenko""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""org-update""" note="""captioned, video posted, video: 39:35"""]]
-[[!template id=sched time="""20""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2024-rust""" startutc="""2024-12-07T15:40:00+0000""" endutc="""2024-12-07T16:00:00+0000""" start="""10:40""" end="""11:00""" title="""An experimental Emacs core in Rust""" url="""/2024/talks/rust""" speakers="""Troy Hinckley""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""rust""" note="""captioned, video posted, video: 20:06"""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-rust.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-rust""" startutc="""2024-12-07T15:40:00+0000""" endutc="""2024-12-07T16:00:00+0000""" start="""10:40""" end="""11:00""" title="""An experimental Emacs core in Rust""" url="""/2024/talks/rust""" speakers="""Troy Hinckley""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""rust""" note="""captioned, video posted, video: 20:06"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-color.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-color""" startutc="""2024-12-07T16:20:00+0000""" endutc="""2024-12-07T16:30:00+0000""" start="""11:20""" end="""11:30""" title="""Colour your Emacs with ease""" url="""/2024/talks/color""" speakers="""Ryota Sawada""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""color""" note="""captioned, video posted, video: 11:48"""]]
[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-p-search.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-p-search""" startutc="""2024-12-07T16:20:00+0000""" endutc="""2024-12-07T16:45:00+0000""" start="""11:20""" end="""11:45""" title="""p-search: a local search engine in Emacs""" url="""/2024/talks/p-search""" speakers="""Zac Romero""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""p-search""" note="""captioned, video posted, video: 22:42"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-julia.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-julia""" startutc="""2024-12-07T18:00:00+0000""" endutc="""2024-12-07T18:10:00+0000""" start="""1:00""" end="""1:10""" title="""Exploring shared philosophies in Julia and Emacs""" url="""/2024/talks/julia""" speakers="""Gabriele Bozzola""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""julia""" note="""captioned, video posted, video: 09:17"""]]
-[[!template id=sched time="""10""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: MetroWind</a>""" pad="""https://pad.emacsconf.org/2024-theme""" startutc="""2024-12-07T18:00:00+0000""" endutc="""2024-12-07T18:10:00+0000""" start="""1:00""" end="""1:10""" title="""My journey of finding and creating the “perfect” Emacs theme""" url="""/2024/talks/theme""" speakers="""MetroWind""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""theme""" note="""captioned, video posted, video: 11:28"""]]
+[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-theme.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-theme""" startutc="""2024-12-07T18:00:00+0000""" endutc="""2024-12-07T18:10:00+0000""" start="""1:00""" end="""1:10""" title="""My journey of finding and creating the “perfect” Emacs theme""" url="""/2024/talks/theme""" speakers="""MetroWind""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""theme""" note="""captioned, video posted, video: 11:28"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-guile.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-guile""" startutc="""2024-12-07T18:25:00+0000""" endutc="""2024-12-07T18:45:00+0000""" start="""1:25""" end="""1:45""" title="""Beguiling Emacs: Guile-Emacs relaunched!""" url="""/2024/talks/guile""" speakers="""Robin Templeton""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""guile""" note="""captioned, video posted, video: 15:57"""]]
[[!template id=sched time="""15""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: lispmacs</a>""" pad="""https://pad.emacsconf.org/2024-water""" startutc="""2024-12-07T18:30:00+0000""" endutc="""2024-12-07T18:45:00+0000""" start="""1:30""" end="""1:45""" title="""Watering my (digital) plant with Emacs timers""" url="""/2024/talks/water""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""water""" note="""captioned, video posted, video: 13:50"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-secrets.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-secrets""" startutc="""2024-12-07T18:55:00+0000""" endutc="""2024-12-07T19:05:00+0000""" start="""1:55""" end="""2:05""" title="""Committing secrets with git using sops-mode""" url="""/2024/talks/secrets""" speakers="""Jonathan Otsuka""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""secrets""" note=""""""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: lispmacs</a>""" pad="""https://pad.emacsconf.org/2024-shell""" startutc="""2024-12-07T18:55:00+0000""" endutc="""2024-12-07T19:35:00+0000""" start="""1:55""" end="""2:35""" title="""Emacs as a shell""" url="""/2024/talks/shell""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""shell""" note="""captioned, video posted, video: 37:13"""]]
[[!template id=sched time="""60""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-mcclim.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-mcclim""" startutc="""2024-12-07T19:25:00+0000""" endutc="""2024-12-07T20:25:00+0000""" start="""2:25""" end="""3:25""" title="""Elisp and McCLIM""" url="""/2024/talks/mcclim""" speakers="""screwlisp""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""mcclim""" note="""captioned, video posted, video: 34:29"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-casual.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-casual""" startutc="""2024-12-07T19:45:00+0000""" endutc="""2024-12-07T20:05:00+0000""" start="""2:45""" end="""3:05""" title="""Re-imagining the Emacs user experience with Casual Suite""" url="""/2024/talks/casual""" speakers="""Charles Choi""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""casual""" note="""captioned, video posted, video: 18:24"""]]
-[[!template id=sched time="""20""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2024-hyperdrive""" startutc="""2024-12-07T20:25:00+0000""" endutc="""2024-12-07T20:45:00+0000""" start="""3:25""" end="""3:45""" title="""New in hyperdrive.el: quick install, peer graph, transclusion!""" url="""/2024/talks/hyperdrive""" speakers="""Joseph Turner""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""hyperdrive""" note="""captioned, video posted, video: 20:25"""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-hyperdrive.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-hyperdrive""" startutc="""2024-12-07T20:25:00+0000""" endutc="""2024-12-07T20:45:00+0000""" start="""3:25""" end="""3:45""" title="""New in hyperdrive.el: quick install, peer graph, transclusion!""" url="""/2024/talks/hyperdrive""" speakers="""Joseph Turner""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""hyperdrive""" note="""captioned, video posted, video: 20:25"""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://pad.emacsconf.org/2024-maxima">Etherpad</a>""" startutc="""2024-12-07T20:45:00+0000""" endutc="""2024-12-07T21:05:00+0000""" start="""3:45""" end="""4:05""" title="""Emacs, eev, and Maxima - now!""" url="""/2024/talks/maxima""" speakers="""Eduardo Ochs""" track="""Development""" watch="""https://emacsconf.org/2024/watch/dev""" slug="""maxima""" note="""video posted, video: 30:34"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-writing.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-writing""" startutc="""2024-12-07T21:05:00+0000""" endutc="""2024-12-07T21:15:00+0000""" start="""4:05""" end="""4:15""" title="""Emacs Writing Studio""" url="""/2024/talks/writing""" speakers="""Peter Prevos""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""writing""" note="""video posted, video: 13:31"""]]
[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-emacs30.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-emacs30""" startutc="""2024-12-07T21:25:00+0000""" endutc="""2024-12-07T21:50:00+0000""" start="""4:25""" end="""4:50""" title="""Emacs 30 Highlights""" url="""/2024/talks/emacs30""" speakers="""Philip Kaludercic""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""emacs30""" note="""captioned, video posted, video: 24:55"""]]
@@ -39,13 +39,14 @@ Jump to: <a href="#date-2024-12-07">Sat Dec 7</a> - <a href="#date-2024-12-08">S
<div class="schedule" data-start="2024-12-08T14:00:00+0000" data-end="2024-12-08T22:30:00+0000" data-tracks="General,Development">
[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2024-sun-open">Etherpad</a>""" startutc="""2024-12-08T14:00:00+0000""" endutc="""2024-12-08T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Sunday opening remarks""" url="""/2024/talks/sun-open""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""sun-open""" note="""video posted, video: 04:37"""]]
-[[!template id=sched time="""10""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2024-links""" startutc="""2024-12-08T14:10:00+0000""" endutc="""2024-12-08T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""Unlocking linked data: replacing specialized apps with an Org-based semantic wiki""" url="""/2024/talks/links""" speakers="""Abhinav Tushar""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""links""" note="""captioned, video posted, video: 11:21"""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: cosmicexplorer</a>""" note="""Development-focused; on the general track for scheduling reasons""" pad="""https://pad.emacsconf.org/2024-regex""" startutc="""2024-12-08T14:30:00+0000""" endutc="""2024-12-08T14:50:00+0000""" start="""9:30""" end="""9:50""" title="""Emacs regex compilation and future directions for expressive pattern matching""" url="""/2024/talks/regex""" speakers="""Danny McClanahan""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""regex""" note=""""""]]
+[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2024-links">Etherpad</a>""" startutc="""2024-12-08T14:10:00+0000""" endutc="""2024-12-08T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""Unlocking linked data: replacing specialized apps with an Org-based semantic wiki""" url="""/2024/talks/links""" speakers="""Abhinav Tushar""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""links""" note="""captioned, video posted, video: 11:21"""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: cosmicexplorer</a>""" note="""Development-focused; on the general track for scheduling reasons""" pad="""https://pad.emacsconf.org/2024-regex""" startutc="""2024-12-08T14:30:00+0000""" endutc="""2024-12-08T14:50:00+0000""" start="""9:30""" end="""9:50""" title="""Emacs regex compilation and future directions for expressive pattern matching""" url="""/2024/talks/regex""" speakers="""Danny McClanahan""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""regex""" note="""captioned, video posted, video: 24:56"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://pad.emacsconf.org/2024-learning">Etherpad</a>""" startutc="""2024-12-08T15:00:00+0000""" endutc="""2024-12-08T15:20:00+0000""" start="""10:00""" end="""10:20""" title="""Survival of the skillest: Thriving in the learning jungle""" url="""/2024/talks/learning""" speakers="""Bala Ramadurai""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""learning""" note="""captioned, video: 19:39"""]]
[[!template id=sched time="""45""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-blee.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-blee""" startutc="""2024-12-08T15:30:00+0000""" endutc="""2024-12-08T16:15:00+0000""" start="""10:30""" end="""11:15""" title="""About Blee: enveloping our own autonomy directed digital ecosystem with Emacs""" url="""/2024/talks/blee""" speakers="""Mohsen BANAN""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""blee""" note="""captioned, video: 45:30"""]]
-[[!template id=sched time="""15""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2024-hyperbole""" startutc="""2024-12-08T16:30:00+0000""" endutc="""2024-12-08T16:45:00+0000""" start="""11:30""" end="""11:45""" title="""Fun things with GNU Hyperbole""" url="""/2024/talks/hyperbole""" speakers="""Mats Lidell""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""hyperbole""" note="""captioned, video: 14:10"""]]
+[[!template id=sched time="""15""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-hyperbole.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-hyperbole""" startutc="""2024-12-08T16:30:00+0000""" endutc="""2024-12-08T16:45:00+0000""" start="""11:30""" end="""11:45""" title="""Fun things with GNU Hyperbole""" url="""/2024/talks/hyperbole""" speakers="""Mats Lidell""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""hyperbole""" note="""captioned, video: 14:10"""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-open-mic.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-open-mic""" startutc="""2024-12-08T18:00:00+0000""" endutc="""2024-12-08T18:30:00+0000""" start="""1:00""" end="""1:30""" title="""Open mic/pad for quick updates etc.""" url="""/2024/talks/open-mic""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""open-mic""" note=""""""]]
[[!template id=sched time="""15""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-pgmacs.html">BBB</a>""" note="""Development-focused; on the general track for scheduling reasons""" pad="""https://pad.emacsconf.org/2024-pgmacs""" startutc="""2024-12-08T18:40:00+0000""" endutc="""2024-12-08T18:55:00+0000""" start="""1:40""" end="""1:55""" title="""PGmacs: browsing and editing PostgreSQL databases from Emacs""" url="""/2024/talks/pgmacs""" speakers="""Eric Marsden""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""pgmacs""" note="""captioned, video: 13:17"""]]
-[[!template id=sched time="""20""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2024-literate""" startutc="""2024-12-08T19:15:00+0000""" endutc="""2024-12-08T19:35:00+0000""" start="""2:15""" end="""2:35""" title="""Literate programming for the 21st Century""" url="""/2024/talks/literate""" speakers="""Howard Abrams""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""literate""" note="""captioned, video: 15:51"""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-literate.html">BBB</a>""" pad="""https://pad.emacsconf.org/2024-literate""" startutc="""2024-12-08T19:15:00+0000""" endutc="""2024-12-08T19:35:00+0000""" start="""2:15""" end="""2:35""" title="""Literate programming for the 21st Century""" url="""/2024/talks/literate""" speakers="""Howard Abrams""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""literate""" note="""captioned, video: 15:51"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: bardman</a>""" pad="""https://pad.emacsconf.org/2024-students""" startutc="""2024-12-08T20:00:00+0000""" endutc="""2024-12-08T20:10:00+0000""" start="""3:00""" end="""3:10""" title="""An example of a cohesive student workflow in Emacs""" url="""/2024/talks/students""" speakers="""Daniel Pinkston""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""students""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://pad.emacsconf.org/2024-sharing">Etherpad</a>""" startutc="""2024-12-08T20:20:00+0000""" endutc="""2024-12-08T20:40:00+0000""" start="""3:20""" end="""3:40""" title="""So you want to be an Emacs-fluencer?""" url="""/2024/talks/sharing""" speakers="""Gopar""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""sharing""" note="""captioned, video: 21:40"""]]
[[!template id=sched time="""30""" q-and-a="""<a href="https://media.emacsconf.org/2024/current/bbb-transducers.html">BBB</a>""" note="""Development-focused; on the general track for scheduling reasons""" pad="""https://pad.emacsconf.org/2024-transducers""" startutc="""2024-12-08T21:00:00+0000""" endutc="""2024-12-08T21:30:00+0000""" start="""4:00""" end="""4:30""" title="""Transducers: finally, ergonomic data processing for Emacs!""" url="""/2024/talks/transducers""" speakers="""Colin Woodbury""" track="""General""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""transducers""" note="""captioned, video: 26:51"""]]